【问题标题】:TypeLoadException in Microsoft.AspNetCore.Server.Kestrel on startup for .NET Core 1.1 project.NET Core 1.1 项目启动时 Microsoft.AspNetCore.Server.Kestrel 中的 TypeLoadException
【发布时间】:2017-07-18 09:45:34
【问题描述】:

我们正在尝试将我们的 .Net 4.5 项目(Web-Api)移植到 .Net Core。

它对除我之外的每个开发人员都运行良好。此外,我们最近切换到 VS 2017 RC。

程序启动但在第一个请求时崩溃:

-InnerException {System.TypeLoadException: Method 'get_ContentLength' in type 'Microsoft.AspNetCore.Server.Kestrel.Internal.Http.FrameRequestHeaders' 
 from assembly 'Microsoft.AspNetCore.Server.Kestrel, Version=1.1.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60' does not have an implementation.
at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Frame.Reset()
at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Frame.Start()
at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Connection.Start()
at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.ListenerPrimary.DispatchConnection(UvStreamHandle socket)
at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.TcpListenerPrimary.OnConnection(UvStreamHandle listenSocket, Int32 status)
at Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Listener.ConnectionCallback(UvStreamHandle stream, Int32 status, Exception error, Object state)
at Microsoft.AspNetCore.Server.Kestrel.Internal.Networking.UvStreamHandle.UvConnectionCb(IntPtr handle, Int32 status)
at Microsoft.AspNetCore.Server.Kestrel.Internal.Networking.Libuv.NativeMethods.uv_run(UvLoopHandle handle, Int32 mode)
at Microsoft.AspNetCore.Server.Kestrel.Internal.Networking.Libuv.run(UvLoopHandle handle, Int32 mode)
at Microsoft.AspNetCore.Server.Kestrel.Internal.KestrelThread.ThreadStart(Object parameter)
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at Microsoft.AspNetCore.Server.Kestrel.Internal.KestrelThread.<StopAsync>d__45.MoveNext()}  System.Exception {System.TypeLoadException}

我尝试了不同版本的 Microsoft.AspNetCore.Server.Kestrel 无济于事。 删除并重置了我所知道的 VS 的每个缓存并重新安装了 .NET Core 和 VS 2017 RC

项目文件:

  <ItemGroup>
    <PackageReference Include="adremes.Common" Version="1.3.0" />
    <PackageReference Include="adremes.Data" Version="3.0.1" />
    <PackageReference Include="AutoMapper" Version="5.2.0" />
    <PackageReference Include="Microsoft.AspNetCore.Hosting.Abstractions" Version="1.1.0" />
    <PackageReference Include="Microsoft.AspNetCore.Routing" Version="1.1.0" />
    <PackageReference Include="Microsoft.AspNetCore.Server.IISIntegration" Version="1.1.0" />
    <PackageReference Include="Microsoft.AspNetCore.Server.Kestrel" Version="1.1.0" />
    <PackageReference Include="Microsoft.AspNetCore.SignalR.Server" Version="0.2.0-preview2-22683" />
    <PackageReference Include="Microsoft.AspNetCore.WebSockets" Version="1.1.0-preview1-23121" />
    <PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="1.1.0" />
    <PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="1.1.0" />
    <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="1.1.0" />
    <PackageReference Include="Microsoft.Extensions.Logging" Version="1.1.0" />
    <PackageReference Include="Microsoft.Extensions.Logging.Console" Version="1.1.0" />
    <PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="1.1.0" />
    <PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="1.1.0" />
    <PackageReference Include="Microsoft.AspNetCore.Identity" Version="1.1.0" />
    <PackageReference Include="DocumentFormat.OpenXml" Version="2.7.1" />
    <PackageReference Include="AspNet.Security.OpenIdConnect.Server" Version="1.0.0-beta7-final" />
    <PackageReference Include="AspNet.Security.OAuth.Validation" Version="1.0.0-alpha3-final" />
    <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.0.0" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="1.1.1" />
    <PackageReference Include="System.Runtime.Serialization.Primitives" Version="4.3.0" />
  </ItemGroup>

【问题讨论】:

  • 你是从那里拉Microsoft.AspNetCore.WebSockets 的吗?它不在官方的 nuget 源上,所以我猜你是从 myget 或私有存储库中提取它的。 nuget.org 上最新的 Microsoft.AspNetCore.WebSockets 是 1.0.0,所以我怀疑它正在使用它拉一些夜间构建的 ASP.NET Core
  • 这两个包之一可能是你的问题。有些东西正在引入更新版本的 http 抽象,这破坏了 kestrel。

标签: c# .net asp.net-core .net-core kestrel-http-server


【解决方案1】:

问题已通过还原解决

<PackageReference Include="Microsoft.AspNetCore.WebSockets" Version="1.1.0-preview1-23121" />

返回

<PackageReference Include="Microsoft.AspNetCore.WebSockets" Version="1.0.0" />

在稳定的 1.1.0 版本中问题仍然存在。

为什么它对某些开发人员有效,而对其他开发人员无效仍然是个谜。

【讨论】:

    【解决方案2】:

    花了几个小时试图解决这个问题。解决方案正在更新为

    "Microsoft.AspNetCore.Authentication.Google": "1.1.1" 
    

    在 project.json 中。看似完全独立的软件包。如果有人卡住了,我会尝试处理其他依赖项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-31
      • 2022-01-07
      • 2019-02-21
      • 1970-01-01
      相关资源
      最近更新 更多