我在 Visual Studio 中有两个独立的项目 - 一个是 WebAPI,另一个是 MVC 网站...
我能否将这两个项目发布到同一个 Azure Web 站点上,以便请求: - /api/products/ => 返回 WebAPI 的 JSON - /products/ => 返回 MVC 网站的 HTML
我在 Visual Studio 中有两个独立的项目 - 一个是 WebAPI,另一个是 MVC 网站...
我能否将这两个项目发布到同一个 Azure Web 站点上,以便请求: - /api/products/ => 返回 WebAPI 的 JSON - /products/ => 返回 MVC 网站的 HTML
前往Azure门户并创建一个Azure网站 -
然后按以下设置在设置中设置额外的应用程序 -
现在在Visual Studio解决方案中创建两个项目-> 1)MVC和2)WebApi
下载上述创建的Azure网站的发布设置文件。将发布设置文件导入到Visual Studio MVC项目发布中,如下所示-
对于WebApi项目,导入相同的发布设置,但是创建一个新路径为website/webapi。
发布这两个项目。
现在导航到http://{yoursite}.azurewebsites.net访问MVC网站。并导航到 http://{yoursite}.azurewebsites.net/webapi/api 访问您的WebApi。
基本上,需要完成以下步骤才能使其正常工作。
解决方案包含:
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 命令构建您的 Angular 应用程序,并部署 dist/clientApp 文件夹,使用根路径进行发布。
现在两者都应该正常工作。
angular app https://{AzureAppName}.azurewebsites.net
Web API https://{AzureAppName}.azurewebsites.net/{folderName}/api/{controllerName}/{action}
如果用户在访问API项目时仍然遇到“无法从web.config读取配置数据”的问题或者出现502错误代码,则需要进行以下操作:
在您的API项目中,转到startup.cs并更改configure函数以包含以下代码行:
app.Map('/{folderName}', app1 => Configure1(app1, loggerFactory);
并创建一个名为configure1的空白副本配置函数,并按照上述方法重新部署您的API项目。
public void Configure1(IApplicationBuilder app, ILoggerFactory loggerFactory)
{
//keep it blank
}