将Web API和MVC项目发布到同一个Azure网站?

时间:2014-05-02 13:00:27

标签: asp.net-mvc azure asp.net-web-api publish azure-web-sites

我在Visual Studio中有两个单独的项目 - 一个用于WebAPI,另一个用于MVC网站...

我是否可以将这两者发布到同一个Azure网站,以便请求: - / api / products / =>从WebAPI中提供JSON - / products / =>从MVC网站提供HTML

2 个答案:

答案 0 :(得分:27)

转到Azure门户并创建AzureWebsite -

enter image description here

然后在设置中设置其他应用程序,如下所示 -

enter image description here

现在在Visual Studio解决方案中创建两个项目 - > 1)MVC和2)WebApi

enter image description here

下载上面创建的azure网站的publishsettings文件。将publishsettings文件导入Visual Studio MVC项目发布,如下所示 -

enter image description here

对于WebApi项目,导入相同的发布设置,但创建一个新路径为 website / webapi

enter image description here

发布这两个项目。

现在导航到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
        }