我在Visual Studio中有两个单独的项目 - 一个用于WebAPI,另一个用于MVC网站...
我是否可以将这两者发布到同一个Azure网站,以便请求: - / api / products / =>从WebAPI中提供JSON - / products / =>从MVC网站提供HTML
答案 0 :(得分:27)
转到Azure门户并创建AzureWebsite -
然后在设置中设置其他应用程序,如下所示 -
现在在Visual Studio解决方案中创建两个项目 - > 1)MVC和2)WebApi
下载上面创建的azure网站的publishsettings文件。将publishsettings文件导入Visual Studio MVC项目发布,如下所示 -
对于WebApi项目,导入相同的发布设置,但创建一个新路径为 website / webapi 。
发布这两个项目。
现在导航到MVC网站的http:// { yoursite } .azurewebsites.net。并导航到您的WebApi的http:// { yoursite } .azurewebsites.net / webapi / api。
答案 1 :(得分:0)
基本上,需要执行以下步骤才能使其正常工作。
解决方案包含
i)sampleApp.API(.Net Core Web API)将部署在子文件夹中
ii)sampleApp.UI(Angular应用)
为两个应用程序设置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您的角度应用程序并部署dist / clientApp文件夹并使用根路径发布。
所以现在两个都应该像
angular app https://{AzureAppName}.azurewebsites.net
Web API https:// {AzureAppName} .azurewebsites.net / {folderName} / api / {controllerName} / {action}
如果在访问api项目或获取错误代码502时,用户仍然遇到“无法从web.config读取配置数据”的问题,那么
为此,请在API项目中转到startup.cs并更改configure函数以使其具有以下代码行
app.Map('/{folderName}', app1 => Configure1(app1, loggerFactory);
并使用名称configure1在configure函数的空白副本中创建并如上所述重新部署您的API项目。
public void Configure1(IApplicationBuilder app, ILoggerFactory loggerFactory)
{
//keep it blank
}