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

Posted

技术标签:

【中文标题】将 WebAPI 和 MVC 项目发布到同一个 Azure 网站?【英文标题】:Publish WebAPI and MVC projects to same Azure Web Site? 【发布时间】:2014-05-02 13:00:27 【问题描述】:

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

我可以将这两个发布到同一个 Azure 网站,以便请求: - /api/products/ => 提供来自 WebAPI 的 JSON - /products/ => 提供来自 MVC 网站的 html

【问题讨论】:

我相信您需要创建两个单独的天蓝色网站。既然可以创建混合 MVC 控制器和 Api 控制器的 MVC 项目,为什么需要两个不同的项目? 【参考方案1】:

转到 Azure 门户并创建一个 Azure 网站 -

然后在设置中设置一个额外的应用程序如下 -

现在在 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。

【讨论】:

@Nadav,我在免费模式下尝试了上面的示例,它成功了。 我收到以下消息:“页面无法显示,因为发生了内部服务器错误。” nadav,我遇到了同样的错误。我怀疑是因为 HTTP 请求没有正确路由到第二个项目。您是否发现了有关此问题的其他任何信息? 我针对此答案遇到的问题打开了另一个问题。 ***.com/questions/34781561/… 如何进入第二个网站(WebApi)的应用设置?【参考方案2】:

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

解决方案包含

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 项目或收到错误代码 502 时仍然遇到“无法从 web.config 读取配置数据”问题,则

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

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

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

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

【讨论】:

它对我有用。如果有人仍然面临一些相关问题,请随时讨论,

以上是关于将 WebAPI 和 MVC 项目发布到同一个 Azure 网站?的主要内容,如果未能解决你的问题,请参考以下文章

OWIN Katana、Webapi、MVC 都在单独的项目中

asp.net mvc webapi接收参数问题

将Asp.Net WebAPI从AngularJS App的Asp.Net MVC站点移动到一个单独的站点

WebApi MVC 6,有没有办法重用MVC授权?

如何将自定义标头从 mvc 项目发送到 Web api 项目?

如何将 Web API 添加到现有的 ASP.NET MVC (5) Web 应用程序项目中?