Asp.Net Azure 上的核心 2.0 结果为 502.5
Asp.Net Core 2.0 on Azure results in a 502.5
我有一个使用 Asp.Net Core 1.1 开发的小型 Web 应用程序,部署在 Azure 上并且运行良好。我刚刚将项目迁移到使用 Asp.Net Core 2.0 并尝试将其部署在 Azure 上。部署进行得很顺利,但是当我打开站点时,出现 502.5 错误。当我检查我的 Azure 日志流时,我收到以下错误:
This error occurs when a CGI application does not return a valid set
of HTTP headers, or when a proxy or gateway was unable to send the
request to a parent gateway. You may need to get a network trace or
contact the proxy server administrator, if it is not a CGI problem.
不用说它在我的开发机器上使用相同的代码运行良好。请注意,我也在使用 Entity Framework Core 2.0,尽管我在 Azure 上停用了数据库创建(以检查这是否不是原因)。
供参考,我从 1.1 迁移到 2.0 的方法是将目标框架设置更改为 "netcoreapp2.0" 并使用 NuGet 包 "Microsoft.AspNetCore.All"。可以肯定的是,我还删除了我的发布配置文件并重新创建了一个。
Asp.NetCore 2.0 是否可能在 Azure 上尚不可用?我是 Asp.Net Core 的新手,所以我不知道 Azure 何时会提供新版本。
编辑
当我按照 natemcmaster 的建议通过调试控制台尝试使用 dot net CLI 运行 我的应用程序时,我遇到了以下问题:
Unhandled Exception: System.IO.FileLoadException: Could not load file
or assembly 'Microsoft.AspNetCore.Hosting.Abstractions,
Version=2.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'.
The located assembly's manifest definition does not match the assembly
reference. (Exception from HRESULT: 0x80131040)
我在桌面上下载了DLL,用Dot Net Peak查看版本确实是1.1.2,虽然我是用Visual Studio创建工程直接发布的,所以是不是Visual Studio 的问题?还是 Nuget?
在门户中或通过远程访问检查日志文件 D:\home\LogFiles
。
有时,日志不会指出发生了什么问题。另一种进一步调查的好方法是尝试从调试控制台启动您的 ASP.NET 核心应用程序。如果您缺少共享框架版本或存在其他启动错误,这将在调试控制台中更加明显。
转到
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
见https://github.com/Azure/app-service-announcements/issues/14
"The rollout is expected to complete by Friday June 30th."
这个问题实际上是因为,起初,我的网络应用程序使用的是 .net core 1.1,它将所有 DLL 部署在网络应用程序的 "wwwroot" 文件夹中。但是,对于 asp.net 核心 2.0,它不再这样做,因为 DLL 是从全局存储中获取的。然而,由于 Visual Studio 在发布前不清理目标文件夹,我最终遇到了 1.1 DLL 在我的 wwwroot 中的情况,所以网站选择了这些而不是商店中的 2.0文件夹。
这里有更详细的解释:https://github.com/Azure/app-service-announcements-discussions/issues/2#issuecomment-313816550
在我的情况下,出现问题是因为 AppService 当时支持 2.0.0-preview2-006497,但我安装了 2.0.0-preview3-006890,它在构建时使用。
所以我添加了 global.json
来使用预览版 2 SDK 然后它就起作用了
其他人已经解释了发生这种情况的原因。我想提供另一个——可以说更简单——的解决方案来解决这个问题。
只需更改设置即可删除 Azure 上已有的文件 – 见下文:
在我的例子中,这是由项目名称中的 space 引起的。
- 我可以轻松添加 space,发布 => 502.5。
- 删除 space,发布 => 一切顺利。
难以置信,但我很容易将其复制到上面。
还使用 "Remove Additional Files at Destination" 每个
我不知道这是否有一天能帮助某人,但就我而言,我使用的是:
-Microsoft.AspNetCore.All 2.0.5
下载到Microsoft.AspNetCore.All 2.0.3解决我的问题
当您的 ASP.NET Core 版本在服务器上无法匹配时,就会发生这种情况。
最简单的解决方案是更改您的设置以将应用程序部署为独立的,因此 Azure 是否可以匹配框架版本并不重要。此外,删除 Azure 上已有的文件,这样升级时就不会出现问题,如 .
所述
我有一个使用 Asp.Net Core 1.1 开发的小型 Web 应用程序,部署在 Azure 上并且运行良好。我刚刚将项目迁移到使用 Asp.Net Core 2.0 并尝试将其部署在 Azure 上。部署进行得很顺利,但是当我打开站点时,出现 502.5 错误。当我检查我的 Azure 日志流时,我收到以下错误:
This error occurs when a CGI application does not return a valid set of HTTP headers, or when a proxy or gateway was unable to send the request to a parent gateway. You may need to get a network trace or contact the proxy server administrator, if it is not a CGI problem.
不用说它在我的开发机器上使用相同的代码运行良好。请注意,我也在使用 Entity Framework Core 2.0,尽管我在 Azure 上停用了数据库创建(以检查这是否不是原因)。
供参考,我从 1.1 迁移到 2.0 的方法是将目标框架设置更改为 "netcoreapp2.0" 并使用 NuGet 包 "Microsoft.AspNetCore.All"。可以肯定的是,我还删除了我的发布配置文件并重新创建了一个。
Asp.NetCore 2.0 是否可能在 Azure 上尚不可用?我是 Asp.Net Core 的新手,所以我不知道 Azure 何时会提供新版本。
编辑
当我按照 natemcmaster 的建议通过调试控制台尝试使用 dot net CLI 运行 我的应用程序时,我遇到了以下问题:
Unhandled Exception: System.IO.FileLoadException: Could not load file or assembly 'Microsoft.AspNetCore.Hosting.Abstractions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
我在桌面上下载了DLL,用Dot Net Peak查看版本确实是1.1.2,虽然我是用Visual Studio创建工程直接发布的,所以是不是Visual Studio 的问题?还是 Nuget?
在门户中或通过远程访问检查日志文件 D:\home\LogFiles
。
有时,日志不会指出发生了什么问题。另一种进一步调查的好方法是尝试从调试控制台启动您的 ASP.NET 核心应用程序。如果您缺少共享框架版本或存在其他启动错误,这将在调试控制台中更加明显。
转到
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
见https://github.com/Azure/app-service-announcements/issues/14 "The rollout is expected to complete by Friday June 30th."
这个问题实际上是因为,起初,我的网络应用程序使用的是 .net core 1.1,它将所有 DLL 部署在网络应用程序的 "wwwroot" 文件夹中。但是,对于 asp.net 核心 2.0,它不再这样做,因为 DLL 是从全局存储中获取的。然而,由于 Visual Studio 在发布前不清理目标文件夹,我最终遇到了 1.1 DLL 在我的 wwwroot 中的情况,所以网站选择了这些而不是商店中的 2.0文件夹。
这里有更详细的解释:https://github.com/Azure/app-service-announcements-discussions/issues/2#issuecomment-313816550
在我的情况下,出现问题是因为 AppService 当时支持 2.0.0-preview2-006497,但我安装了 2.0.0-preview3-006890,它在构建时使用。
所以我添加了 global.json
来使用预览版 2 SDK 然后它就起作用了
其他人已经解释了发生这种情况的原因。我想提供另一个——可以说更简单——的解决方案来解决这个问题。
只需更改设置即可删除 Azure 上已有的文件 – 见下文:
在我的例子中,这是由项目名称中的 space 引起的。
- 我可以轻松添加 space,发布 => 502.5。
- 删除 space,发布 => 一切顺利。
难以置信,但我很容易将其复制到上面。
还使用 "Remove Additional Files at Destination" 每个
我不知道这是否有一天能帮助某人,但就我而言,我使用的是: -Microsoft.AspNetCore.All 2.0.5
下载到Microsoft.AspNetCore.All 2.0.3解决我的问题
当您的 ASP.NET Core 版本在服务器上无法匹配时,就会发生这种情况。
最简单的解决方案是更改您的设置以将应用程序部署为独立的,因此 Azure 是否可以匹配框架版本并不重要。此外,删除 Azure 上已有的文件,这样升级时就不会出现问题,如