【问题标题】:ASP.NET Core website on Azure fails to start with a 502.5 error after upgrade from .NET Core 1.1.1 to .NET Core 1.1.2从 .NET Core 1.1.1 升级到 .NET Core 1.1.2 后,Azure 上的 ASP.NET Core 网站无法启动并出现 502.5 错误
【发布时间】:2017-05-11 12:25:53
【问题描述】:

我有一个 .NET Core Web 应用程序,我将其部署为 Azure Web 应用程序。

直到昨晚我应用 Visual Studio 2017 升级 (v15.2) 时,这一直运行良好。

.net 核心版本从 1.1.1 升级到 1.1.2。当我部署到 Azure 时,网站无法启动并出现 502.5 错误。

经过调查,我可以看到 .NET Core 1.1.2 未部署到 Azure 映像。

我无法将新框架安装到 Web 应用程序实例(可以理解,Program Files 目录上的权限被拒绝)。我无法通过 nuget 包管理器“降级”,因为它报告版本被“项目阻止”。我看不到在 csproj 文件中定义 Microsoft.NETCore.App 版本的方法,因为这似乎是由根 <Project Sdk="Microsoft.NET.Sdk.Web"> 元素“自动”控制的。

我已尝试尝试自包含部署(将框架与 Web 应用一起提供),但也无法正常工作。

没有等待将新版本部署到 Azure 的时间(我找不到任何关于他们的日程安排的信息)是否有人对如何让 Web 应用再次运行有任何想法?

有没有办法强制它在1.1.1下运行?

【问题讨论】:

标签: azure asp.net-core web-applications .net-core .net-core-1.1


【解决方案1】:

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

原解决方案

最好的解决方法是在您的 .csproj 文件中进行设置:

<TargetFramework>netcoreapp1.1.1</TargetFramework>

而不是将其设置为netcoreapp1.1。我们将在周二之前将 1.1.2 部署到 Azure 应用服务,此时不需要解决方法。

请注意,如果您将其设置为 netcoreapp1.1.1,则一旦 1.1.2 可用,它将自动滚动到该位置。因此,将其设置为 netcoreapp1.1.1 不会让您“卡在”该版本。只要您使用便携模式(即依赖操作系统上的框架),情况就是如此。如果您使用独立的并部署自己的框架,那么您将被困住(但您一开始就不会遇到这个问题,也不需要这样做!)。

【讨论】:

  • 尽管我很喜欢闪亮的新功能和修复,但您认为将来可以在满足其先决条件之后推出 Visual Studio 更新?
  • @EdwardBrey 当然,这里有一些学习。问题是没有人意识到仅仅拥有新的 VS 会导致部署的位针对新版本,即使用户的文件完全相同。所以是的,我们搞砸了,下次我们会确保避免这种情况。
  • 感谢您在这里回复,并且您承认这不是最佳选择。
  • @DavidEbbo 我仍然收到此错误,但根据您更新的答案,使用 AspNetCore 1.1.2 时应该不需要将 netcoreapp1.1.1 设置为 targetFramework 吗?我对么?现在是否需要其他设置才能运行?
  • @Larsi 你很可能会遇到不同的事情,即使错误看起来很相似。 1.1.2 到处部署,所以这个问题不再存在。请开始一个新问题,详细说明您的情况。随意从这里链接它以获取上下文。
【解决方案2】:

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

一种解决方法是在 Kudu 中为您的站点在部署后编辑 web.config。

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

例如 &lt;aspNetCore processPath="%LAUNCHER_PATH%" arguments="--fx-version 1.1.1 PATH_TO_DLL" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"/&gt;

【讨论】:

  • 查看我的答案以获得更简单的解决方法,该解决方法不需要在 Kudu 部署后进行黑客攻击。
  • 不幸的是,这是唯一对我有用的解决方案(打包的 netcoreapp2.1 项目在具有 2.2.1 的机器上运行)。 TargetFramework 版本已经是正确的,添加这个参数为我们解决了运行时问题。
【解决方案3】:

在他们开始将 1.1.2 部署到 Web 应用映像之前,我设法通过强制项目引用 Microsoft.NETCore.App 1.1.1 来解决此问题

编辑 csproj 文件:

<ItemGroup> <PackageReference Update="Microsoft.NETCore.App" Version="1.1.1" /> <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.0.0" /> <PackageReference Include="Microsoft.AspNetCore" Version="1.1.1" /> ... etc

【讨论】:

  • 这不是推荐的解决方法。相反,只需根据我的回答更改 TargetFramework
  • 谢谢@DavidEbbo。 nuget 引用和 TargetFramework 之间有什么关联?这有点令人困惑。我已将所有软件包更新为最新版本,并将 targetframework 更新为 1.1.2。由于 Azure 错误,我将其恢复为 1.1.1。但是,我将按原样离开 NuGet。
猜你喜欢
  • 2021-05-14
  • 2018-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-06
  • 1970-01-01
  • 1970-01-01
  • 2019-07-12
相关资源
最近更新 更多