Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 是否将WebAPI和MVC项目发布到同一Azure网站?_Asp.net Mvc_Azure_Asp.net Web Api_Publish_Azure Web App Service - Fatal编程技术网

Asp.net mvc 是否将WebAPI和MVC项目发布到同一Azure网站?

Asp.net mvc 是否将WebAPI和MVC项目发布到同一Azure网站?,asp.net-mvc,azure,asp.net-web-api,publish,azure-web-app-service,Asp.net Mvc,Azure,Asp.net Web Api,Publish,Azure Web App Service,我在VisualStudio中有两个独立的项目-一个是WebAPI,另一个是MVC网站 我是否可以将这两者发布到同一Azure网站,以便请求: -/api/products/=>提供来自WebAPI的JSON -/products/=>从MVC网站提供HTML转到Azure门户并创建AzureWeb站点- 然后在设置中设置一个附加应用程序,如下所示- 现在在Visual studio解决方案->1)MVC和2)WebApi中创建两个项目 下载上面创建的azure网站的publishsett

我在VisualStudio中有两个独立的项目-一个是WebAPI,另一个是MVC网站

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

转到Azure门户并创建AzureWeb站点-

然后在设置中设置一个附加应用程序,如下所示-

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

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

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

发布两个项目


现在导航到MVC站点的http://{yoursite}.azurewebsites.net。然后导航到http://{yoursite}.azurewebsites.net/webapi/api以获取您的webapi。

基本上,这需要执行以下步骤才能使其正常工作

溶液包含

i) 将在子文件夹中部署sampleApp.API(.Net Core Web API)

ii)sampleApp.UI(角度应用程序)

为两个应用程序设置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--生成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并将configure函数更改为具有以下代码行

app.Map('/{folderName}', app1 => Configure1(app1, loggerFactory);
并创建名为configure1的configure函数的空白副本,并如上所述重新部署API项目

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

我相信您需要创建两个单独的azure网站。既然你可以创建一个混合了MVC控制器和Api控制器的MVC项目,为什么你需要两个不同的项目?@Nadav,我在自由模式下尝试了上面的例子,结果成功了。我收到了以下消息:“由于发生了内部服务器错误,页面无法显示。”。我怀疑是因为HTTP请求没有正确路由到第二个项目。关于这个问题,你还发现了什么吗?我为这个答案的一个问题提出了另一个问题。我如何才能转到第二个网站(WebApi)的应用程序设置?这对我很有用。如果有人仍然面临一些相关问题,请随时讨论,