[英]Deploy an ASP.net MVC website to a subfolder of an Azure website?
我有一个 asp.net mvc 网站,我想将其部署到 Azure(最好通过 GitHub 部署),以便它可以作为主域的子文件夹进行访问。
例如http://example.com/mymvcsite/
理想情况下,我希望该网站在子文件夹下完全独立。 好像它被配置为一个很好的老式 IIS 应用程序文件夹。 即我不想为 mydomain.com 建立一个域 mvc 网站,它恰好在 /mymvcsite/ 子文件夹路径下完成所有业务。
我很高兴整个网站都托管在 Azure 上,这个特定项目位于子文件夹下才有意义。
我今天一直在挣扎和谷歌搜索,试图弄清楚如何解决这个问题,但结果却是一片空白。
如果您使用 Web 部署发布方法,则可以在站点名称mydomain/mymvcsite
而不是mydomain
。 至少它适用于默认的 windows azure 站点http://mydomain.azurewebsites.net/mymvcsite
。
或者您可以使用 FTP 发布方法。
您只需转到 azure 的控制面板并添加虚拟目录路径即可。
请访问此 MDSN 博客以了解它是如何完成的。
基本上这需要执行以下步骤才能使其工作。
解决方案包含
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
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.