Azure上的Asp.Net Core 2.0导致502.5

时间:2017-06-14 16:27:40

标签: azure asp.net-core asp.net-core-2.0

我有一个在Azure上部署的Asp.Net Core 1.1开发的小型Web应用程序,它运行良好。我刚刚迁移了项目以使用Asp.Net Core 2.0并尝试在Azure上部署它。部署进行得很顺利,但是当我打开网站时,出现了502.5错误。当我检查我的Azure日志流时,出现以下错误:

  

当CGI应用程序未返回有效集时,会发生此错误   HTTP标头,或代理或网关无法发送时   请求父网关。您可能需要获取网络跟踪或   如果不是CGI问题,请联系代理服务器管理员。

毫无疑问,它在我的开发机器上使用相同的代码运行良好。请注意,我也在使用Entity Framework Core 2.0,尽管我在Azure上停用了数据库创建(以检查它是否不是原因)。

有关信息,我从1.1迁移到2.0的方法是将目标框架设置更改为“netcoreapp2.0”并使用NuGet包“Microsoft.AspNetCore.All”。为了确定,我还删除了我的发布配置文件并重新创建了一个。

Azure上是否还没有Asp.Net Core 2.0?我是Asp.Net Core的新手,所以我不知道Azure上何时提供新版本。

修改

当我尝试使用dot net CLI通过natemcmaster提议的调试控制台运行我的应用程序时,我遇到了以下问题:

  

未处理的异常:System.IO.FileLoadException:无法加载文件   或汇编'Microsoft.AspNetCore.Hosting.Abstractions,   Version = 2.0.0.0,Culture = neutral,PublicKeyToken = adb9793829ddae60'。   定位的程序集的清单定义与程序集不匹配   参考。 (HRESULT异常:0x80131040)

我在桌面上下载了DLL并检查了Dot Net Peak的版本,事实上,DLL是1.1.2,虽然我使用Visual Studio创建项目并直接发布它,因此它是Visual Studio的问题吗?还是Nuget?

8 个答案:

答案 0 :(得分:20)

这个问题实际上来自这样一个事实:首先,我的网络应用程序正在使用.net核心1.1,它将部署所有DLL,并在#www; wwwroot" Web应用程序的文件夹。但是,使用asp.net core 2.0时,它不会再这样做,因为DLL是从全局存储中获取的。但是,由于Visual Studio在发布之前没有清理目标文件夹,我最终得到了1.1 DLL在我的wwwroot中的情况,因此网站正在拾取这些而不是商店文件夹中的2.0。 / p>

这里有更详细的解释:https://github.com/Azure/app-service-announcements-discussions/issues/2#issuecomment-313816550

答案 1 :(得分:16)

其他人已经解释了为什么会这样。我想提供另一个 - 可以说更容易 - 解决问题的方法。

只需更改设置即可删除Azure上已有的文件 - 请参阅下文:

publish project settings

publish project settings option

答案 2 :(得分:6)

检查门户中的日志文件或远程访问D:\home\LogFiles

有时,日志不会表明出现了什么问题。进一步调查的另一个好方法是尝试从调试控制台启动ASP.NET Core应用程序。如果您缺少共享框架版本或者存在另一个启动错误,则从调试控制台可以更明显地看到这一点。

转到

https://(your web site name here).scm.azurewebsites.net/DebugConsole/

您的网站将位于D:\home\site\wwwroot。您可以通过执行以下命令启动它:

cd D:\home\site\wwwroot
dotnet MyWebApp.dll

如果您的应用仍然无法启动,请确保D:\home\site\wwwroot\web.config可用并配置为使用ASP.NET核心模块。 https://docs.microsoft.com/en-us/aspnet/core/hosting/aspnet-core-module

答案 3 :(得分:2)

就我而言,这是因为项目名称中有空格。

  • 我可以随意添加空格,发布=> 502.5。
  • 删除空格,发布=>很高兴。

很难相信,但我在上面很容易复制它。

还要按照@Sam's Answer

使用“在目的地删除其他文件”

答案 4 :(得分:1)

参见https://github.com/Azure/app-service-announcements/issues/14 "推出预计将于6月30日星期五完成。"

答案 5 :(得分:1)

在我的情况下出现问题是因为当时AppService支持2.0.0-preview2-006497,但我安装了2.0.0-preview3-006890,用于构建。 所以我添加了global.json来使用预览2 SDK,然后就可以了

答案 6 :(得分:0)

我不知道这有时可以帮助某人,但就我而言,我正在使用: -Microsoft.AspNetCore.All 2.0.5

Downdrage to Microsoft.AspNetCore.All 2.0.3解决了我的问题

答案 7 :(得分:0)

当您的ASP.NET Core版本在服务器上无法匹配时,就会发生这种情况。

最简单的解决方案是更改设置以将应用程序独立部署,因此Azure是否可以匹配框架版本都没有关系。另外,请删除Azure上已经存在的文件,以便升级时没有问题,如@Sam所述。

enter image description here