从ASP.NET Core 1.1迁移到2.0。失败,“无法初始化CoreCLR,HRESULT:0x80004005”

时间:2017-08-30 14:12:32

标签: c# azure asp.net-core-mvc asp.net-core-mvc-2.0

我已将我的应用程序从ASP.NET Core v1.1更新为ASP.NET Core 2.0。

我的开发机器上的一切正常。但是当我部署到Azure时,我得到"HTTP Error 502.5 - Process Failure"作为回复。

我已经在web.config中激活了日志:

<aspNetCore processPath=".\PublicWeb2.Web.exe" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" />

日志说:

  

无法初始化CoreCLR,HRESULT:0x80004005

如果我从Kudo的命令提示符运行dotnet mysite.dll,我会收到同样的错误。

Azure中的事件日志会出现以下错误:

  

具有物理根'D:\ home \ site \ wwwroot \'的应用'MACHINE / WEBROOT / APPHOST / XXXXX'无法使用命令行'D:\ home \ site \ wwwroot \ XXX'启动进程,ErrorCode ='0x80004005 :80008089。

相关Azure设置:

enter image description here

我完整的csproj:

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
    <UserSecretsId>XXXXXXXXXXX</UserSecretsId>
    <RuntimeIdentifiers>win7-x86;win7-x64</RuntimeIdentifiers>
    <WebProject_DirectoryAccessLevelKey>1</WebProject_DirectoryAccessLevelKey>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="MarkdownWeb" Version="1.3.4" />
    <PackageReference Include="MarkdownWeb.Git" Version="1.0.1" />
    <PackageReference Include="Microsoft.AspNetCore" Version="2.0.0" />
    <PackageReference Include="Microsoft.AspNetCore.Authentication.Cookies" Version="2.0.0" />
    <PackageReference Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="2.0.0" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.0.0" />
    <PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.0.0" />
    <PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="2.0.0" />
    <PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="2.0.0" />
    <PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink" Version="2.0.0" />
    <PackageReference Include="System.Net.NameResolution" Version="4.3.0" />
  </ItemGroup>

  <ItemGroup>
    <DotNetCliToolReference Include="Microsoft.Extensions.SecretManager.Tools" Version="2.0.0" />
    <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\XXX\XXX.csproj" />
  </ItemGroup>

</Project>

云服务上安装的Dotnet版本:

D:\home\site\wwwroot>dotnet --info
.NET Command Line Tools (2.0.0)

Product Information:
 Version:            2.0.0
 Commit SHA-1 hash:  cdcd1928c9

Runtime Environment:
 OS Name:     Windows
 OS Version:  6.2.9200
 OS Platform: Windows
 RID:         win8-x86
 Base Path:   D:\Program Files (x86)\dotnet\sdk\2.0.0\


Microsoft .NET Core Shared Framework Host
  Version  : 2.0.0
  Build    : e8b8861ac7faf042c87a5c2f9f2d04c98b69f28d

我做了什么(从阅读其他SO问题):

  • 在我的csproj
  • 中添加了win7-x86作为第一个运行时标识符
  • 在azure部署设置中选择win7-x86
  • 使用Kudo中的控制台手动删除wwwroot中的所有旧文件(然后再次部署)
  • 尝试激活COREHOST_TRACE=1,但控制台以kudo挂起(并且管道到日志不起作用,即dotnet myapp.dll > mylog.txt

我不知道接下来该做什么。

1 个答案:

答案 0 :(得分:5)

终于搞定了。

1。删除项目文件中的运行时标识符

在webproject的csproj文件中,我删除了<RuntimeIdentifiers>元素(如果您指定了单个运行时,则为<RuntimeIdentifier>)。

2。删除发布配置文件中的<RuntimeIdentifier>

pubxml可以在

下的解决方案资源管理器中找到
Project -> Properties -> PublishProfiles -> yourfilename.pubxml.

删除以下行(指定了运行时)

<RuntimeIdentifier>win7-x86</RuntimeIdentifier>

保存文件并关闭它。

下次运行publish命令时,它应该说&#34; portable&#34;在Settings选项下:

enter image description here

这对我有用。

因此我的猜测是真正的解决方案是:

  1. 在天蓝色门户网站中停止该网站
  2. 从&#34; wwwroot&#34;中删除所有旧文件使用kudo的文件夹:https://YOURSITE.scm.azurewebsites.net/DebugConsole,运行&#34; rmdir / q / s。&#34;在wwwroot文件夹中。
  3. 确保在发布配置文件中未指定RuntimeIdentifier
  4. 确保csproj文件中未指定RuntimeIdentifier
  5. 发布网站
  6. 在天蓝色门户网站中启动网站