我有一个在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?
答案 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)
答案 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)
就我而言,这是因为项目名称中有空格。
很难相信,但我在上面很容易复制它。
还要按照@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所述。