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

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

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

【问题讨论】:

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

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


【解决方案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 请求没有正确路由到第二个项目。您是否发现了有关此问题的其他任何信息?
  • 我针对此答案遇到的问题打开了另一个问题。 stackoverflow.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
        }

【讨论】:

  • 它对我有用。如果有人仍然面临一些相关问题,请随时讨论,
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-08
  • 1970-01-01
  • 2014-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多