将 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 WebAPI从AngularJS App的Asp.Net MVC站点移动到一个单独的站点