在将ASP.NET Core网站从.NET Core 1.1.1升级到.NET Core 1.1.2后,在Azure上启动时出现502.5错误。

11
我有一个 .NET Core Web 应用程序,我将其部署为 Azure Web 应用程序。这一直工作得很好,直到昨晚我升级了 Visual Studio 2017 (v15.2)。
.NET Core 版本从1.1.1升级到1.1.2。 当我部署到 Azure 时,网站启动失败,并出现502.5错误。经过调查发现,Azure镜像中未部署 .NET Core 1.1.2。
我无法在 Web 应用程序实例上安装新的框架(Program Files 目录权限受限)。 我无法通过 NuGet 包管理器“降级”,因为它报告该版本被项目拒绝。 我无法找到在 csproj 文件中定义 Microsoft.NETCore.App 版本的方法,因为似乎这是由根 <Project Sdk="Microsoft.NET.Sdk.Web"> 元素自动控制的。
我尝试进行自包含部署(将框架与 Web 应用程序一起发布),但也无法使其工作。
除了等待新版本部署到 Azure 外(我找不到任何关于此的时间表信息),是否有任何想法可以让 Web 应用程序再次工作? 是否有任何方法来强制其在 1.1.1 下运行?

1
自从将vs2017更新到V15.2版本以来,我一直遇到相同的错误... - Geotinc
3个回答

14

更新于2017年5月12日:我们已加快将1.1.2和1.0.5部署到应用服务中,现在已经完成。因此下面的解决方法现在不再需要任何人使用。

原始解决方案

最佳解决方法是在您的.csproj文件中设置以下内容:

<TargetFramework>netcoreapp1.1.1</TargetFramework>

与其设置为netcoreapp1.1,我们将在周二部署1.1.2到Azure App Service,到那时,解决方法就不再需要了。

请注意,如果您将其设置为netcoreapp1.1.1,一旦1.1.2可用,它将自动向前滚动到该版本。因此,将其设置为netcoreapp1.1.1并不会使您固定在该版本。只要使用便携式模式(即依赖于操作系统上的框架),这是正确的。如果您使用独立模式并部署自己的框架,则会被困在其中(但是,如果这样做,您最初就不会遇到此问题,并且不需要这样做!)。


3
你认为未来的时候,能否在先满足先决条件后再推出Visual Studio的更新,尽管我很喜欢闪亮的新功能和修复。 - Edward Brey
5
@EdwardBrey 确实,这里有一些需要学习的地方。问题在于没有人意识到仅仅拥有新的 VS 就会导致已部署的位指向新版本,尽管用户的文件完全相同。所以是的,我们犯了错误,下次我们会确保避免这种情况。 - David Ebbo
2
感谢您在此回复,并且承认这并不是最佳选择。 - Boland
1
@DavidEbbo 我仍然遇到这个错误,但基于你更新的答案,在使用AspNetCore 1.1.2时应该不需要将netcoreapp1.1.1设置为targetFramework?我是正确的吗?现在还需要其他设置才能使事情运行吗? - Larsi
1
@Larsi,你很可能遇到了不同的问题,即使错误看起来相似。1.1.2已经在所有地方部署,所以这个问题不再存在。请提出一个新问题,并详细说明您的情况。随意在此处链接以提供背景信息。 - David Ebbo
显示剩余7条评论

2

在 Visual Studio 2017 更新后,我们遇到了相同的问题。

解决方法是在 Kudu 中部署网站后编辑其 web.config 文件。

system.webServer 下的 aspNetCore 条目的参数值开头添加 --fx-version 1.1.1

例如:<aspNetCore processPath="%LAUNCHER_PATH%" arguments="--fx-version 1.1.1 PATH_TO_DLL" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"/>


请查看我的答案,其中提供了一个更简单的解决方法,不需要在Kudu部署后对其进行黑客攻击。 - David Ebbo
1
不幸的是,这是我唯一可行的解决方案(在一个有2.2.1可用的盒子上运行打包的netcoreapp2.1项目)。TargetFramework版本已经正确,添加此参数为我们解决了运行时问题。 - Ian Yates

1
直到他们将1.1.2部署到Web应用程序映像之前,我设法通过强制项目引用Microsoft.NETCore.App 1.1.1来解决此问题。
编辑csproj文件: ...等等

那不是一个推荐的解决方法。相反,只需按照我的答案更改“TargetFramework”。 - David Ebbo
感谢@DavidEbbo。NuGet引用和TargetFramework之间的相关性是什么?有点混淆。我已将所有软件包更新为最新版本,并将targetframework更新为1.1.2。由于Azure的错误,我将其恢复为1.1.1。但是我会保留NuGet不变。 - Boland

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接