安装 Microsoft.Azure.SignalR.AspNet 导致部署到服务器时方法未实现运行时错误,但在 Visual Studio 2017 上运行正常

Installing Microsoft.Azure.SignalR.AspNet causes method not implemented runtime error when deployed to a server but runs fine on Visual Studio 2017

错误:

Method 'MyController' in type 'MyProject.AppStart.Selector' from assembly 'MyProject, Version=1.0.0.0, Culture=neutral, PublicKeyToken=......' does not have an implementation.

背景: 我有一个 ASP.NET 项目,target 框架设置为 .NET Framework 4.6.2。从 nuget package manager 安装 Microsoft.Azure.SignalR.AspNet 1.0.0-preview1-103a17 后,它在 Visual Studio 2017 上构建并运行良好。完全没有问题。当我将发布部署到我的服务器并尝试访问它的任何服务时,我收到上述错误。该方法在实现 System.Web.Http.Dispatcher.IHttpControllerSelector.

的 class 中实现

配置:

我试过的:

我安装时添加了所有这四个依赖项 Microsoft.Azure.SignalR.Protocols 即它们尚未被使用。

我似乎找不到问题所在。

更新: 我在上面提到的 Windows 10 机器上部署了文件夹,并使用 IIS Manager 创建了一个应用程序。该应用程序在没有 Visual Studio.

的同一台机器上工作正常

Windows Server 2012 R2 机器上,我最初安装的是 .NET Core 2.2 runtime 而不是 SDK。我按顺序安装了以下内容:

  1. .NET Core 2.2 SDK(部署还是不行)
  2. .NET Framework 4.7.2 Dev Pack(要求重启,推迟了)
  3. .NET Framework 4.6.1 开发包

安装.NET Framework 4.6.1 Dev Pack后,我重新启动了。现在部署 有效 .

我无法确定解决方案,但我的猜测是安装 .NET Core 2.2 SDK 解决了问题。安装完成后,安装window提示某个版本Microsoft.AspNetCore已安装。它没有要求重新启动,但我猜因为 .NET Core 2.2 Runtime 已经安装并被另一个应用程序使用,所以需要重新启动。

很奇怪 Microsoft.AspNetCore 没有和 .NET Core 2.2 Runtime 一起安装。

修复此问题花了很长时间,因为 typeloadexception 可能会在许多其他情况下出现。

希望这个解决方案也能帮助到其他人。