C# .NET Core 1.1项目启动时Microsoft.AspNetCore.Server.Kestrel中的TypeLoadException

C# .NET Core 1.1项目启动时Microsoft.AspNetCore.Server.Kestrel中的TypeLoadException,c#,.net,asp.net-core,.net-core,kestrel-http-server,C#,.net,Asp.net Core,.net Core,Kestrel Http Server,我们正在尝试将.NET4.5项目(WebAPI)移植到.NETCore 除了我之外,它对每个开发人员都运行良好。此外,我们最近切换到VS 2017 RC 程序启动,但在第一次请求时崩溃: -InnerException {System.TypeLoadException: Method 'get_ContentLength' in type 'Microsoft.AspNetCore.Server.Kestrel.Internal.Http.FrameRequestHeaders' from

我们正在尝试将.NET4.5项目(WebAPI)移植到.NETCore

除了我之外,它对每个开发人员都运行良好。此外,我们最近切换到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}
-InnerException{System.TypeLoadException:type'Microsoft.AspNetCore.Server.Kestrel.Internal.Http.FrameRequestHeaders'中的方法'get_ContentLength'
来自程序集“Microsoft.AspNetCore.Server.Kestrel,版本=1.1.0.0,区域性=中性,PublicKeyToken=adb9793829ddae60”的没有实现。
在Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Frame.Reset()中
在Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Frame.Start()中
在Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Connection.Start()中
位于Microsoft.AspNetCore.Server.Kestrel.Internal.Http.ListenerPrimary.DispatchConnection(UvStreamHandle套接字)
位于Microsoft.AspNetCore.Server.Kestrel.Internal.Http.TcpListenerPrimary.OnConnection(UvStreamHandle listenSocket,Int32状态)
位于Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Listener.ConnectionCallback(UvStreamHandle流,Int32状态,异常错误,对象状态)
位于Microsoft.AspNetCore.Server.Kestrel.Internal.Networking.UvStreamHandle.UvConnectionCb(IntPtr句柄,Int32状态)
在Microsoft.AspNetCore.Server.Kestrel.Internal.Networking.Libuv.NativeMethods.uv_运行(UvLoopHandle,Int32模式)
在Microsoft.AspNetCore.Server.Kestrel.Internal.Networking.Libuv.run(UvLoopHandle句柄,Int32模式)
位于Microsoft.AspNetCore.Server.Kestrel.Internal.KestrelThread.ThreadStart(对象参数)
---来自引发异常的上一个位置的堆栈结束跟踪---
在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()中
位于Microsoft.AspNetCore.Server.Kestrel.Internal.kestrethread.d_u45.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>

该问题已通过恢复解决

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

回到

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

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


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

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

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

在project.json中。看起来完全独立的包。如果有人被卡住了,我会尝试与其他依赖项混在一起。

你是从Microsoft.AspNetCore.WebSockets中拉出的吗?它不在官方的nuget源代码中,所以我猜您是从myget或私有存储库中获取它的。nuget.org上最新的
Microsoft.AspNetCore.WebSockets
是1.0.0,所以我怀疑它正在使用这两个包中的一个可能是您的问题。某种东西正在引入新版本的http抽象,这打破了kestrel。