【问题标题】:Deploy an ASP.net MVC website to a subfolder of an Azure website?将 ASP.net MVC 网站部署到 Azure 网站的子文件夹?
【发布时间】:2020-01-30 21:44:28
【问题描述】:

我有一个 asp.net mvc 网站,我想将它部署到 Azure(最好通过 GitHub 部署),以便作为主域的子文件夹访问它。

例如http://example.com/mymvcsite/

理想情况下,我希望网站在子文件夹下完全独立。好像它被配置为一个很好的老式 IIS 应用程序文件夹。即我不想为 mydomain.com 建立一个域 mvc 网站,它恰好在 /mymvcsite/ 子文件夹路径下完成所有业务。

我很高兴整个网站都托管在 Azure 上,将这个特定项目放在子文件夹下才有意义。

我今天一直在苦苦挣扎,在谷歌上搜索,试图弄清楚如何解决这个问题,却一无所获。

【问题讨论】:

  • 为什么不将其部署到根目录并使用路由添加子文件夹路径?
  • @ahmed 理想情况下,我将来可能想添加其他应用程序子文件夹。不过,这会让我暂时离开。是否建议我可以在我的 Azure 服务文件中添加路由?
  • 你可以在你的 RouteConfig.cs 中添加额外的路由(或者更好的区域)
  • @ahmed 我要去地区。它似乎与我想要的一样接近,而无需在 Azure 中启动 VM 并在 IIS 中设置应用程序文件夹。
  • 我已将接受的答案更改为@Bigs。自从我在 2013 年 2 月提出这个问题以来,MS 已经在 Azure 控制面板中提供了简单的方法来执行此操作。对于它的价值,我当时确实接受了 ahmed 的建议。

标签: .net asp.net-mvc azure azure-web-app-service


【解决方案1】:

你可以直接去 azure 的控制面板,添加一个虚拟目录路径。

请访问这个 MDSN 博客,看看它是如何完成的。

http://blogs.msdn.com/b/kaushal/archive/2014/04/19/microsoft-azure-web-sites-deploying-wordpress-to-a-virtual-directory-within-the-azure-web-site.aspx

【讨论】:

    【解决方案2】:

    如果您使用 Web 部署发布方法,您可以在站点名称中设置 mydomain/mymvcsite 而不是 mydomain。 至少它适用于默认 Windows azure 站点 http://mydomain.azurewebsites.net/mymvcsite

    或者你可以使用FTP发布方式。

    【讨论】:

    • 我试过这个,在第一次部署时使用 Web Deploy 它创建了 /site/wwwroot/stats/(我想要的),但在第二次尝试时,我最终得到了 /site/wwwroot/wwwroot/stats/。
    • 为避免递归,请确保配置文件的“SiteName”和“DestinationURL”指向同一个子文件夹。
    【解决方案3】:

    基本上这需要完成以下步骤才能使其正常工作。

    解决方案包含

    i) sampleApp.API(.Net Core Web API)

    ii)sampleApp.UI(Angular App)

    为两个应用程序设置 Azure 门户

    1) 在 azure 门户中转到您的 Web 应用 -> 设置 -> 配置

    2) 选择路径映射并在此处为子站点创建新的映射条目。添加此条目时不要选择目录复选框以将其保留为虚拟应用程序类型。点击保存

     **Virtual Path:** /{folderName}            **physicalPath:**  /site/wwwroot/{folderName} 
    

    3) 现在转到 VS2017 右键单击​​您的 API 项目并单击发布

    4) 在发布设置窗口中将路径设为

    site name : existing + "/{folderName} "
    DestinationUrl : existing + "/{folderName} "
    

    5) 现在 ng-build --prod 您的 Angular 应用程序并部署 dist/clientApp 文件夹并使用根路径发布。

    所以现在两者都应该像

    angular app https://{AzureAppName}.azurewebsites.net
    
    Web API https://{AzureAppName}.azurewebsites.net/{folderName}/api/{controllerName}/{action}
    

    如果用户在访问 api 项目时仍然面临“无法从 web.config 读取配置数据”的问题

    为此,请在您的 API 项目中转到 startup.cs 并将配置函数更改为具有以下代码行

    app.Map('/{folderName}', app1 => Configure1(app1, loggerFactory);
    

    并创建名为 configure1 的配置函数的空白副本,然后如上所述重新部署您的 API 项目。

    public void Configure1(IApplicationBuilder app, ILoggerFactory loggerFactory)
            {
                //keep it blank
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-23
      • 1970-01-01
      • 2016-05-27
      • 1970-01-01
      • 2019-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多