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

时间:2019-02-15 19:10:25

标签: c# visual-studio azure iis azure-signalr

错误:

  

方法“ MyController”,类型为“ MyProject.AppStart.Selector”,来自   Assembly'MyProject,Version = 1.0.0.0,Culture = neutral,   PublicKeyToken = ......'没有实现。

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

配置:

  • 运行代码的机器:Windows 10版本1809(操作系统内部版本17763.316)。 Visual Studio 2017 15.9.6版。

enter image description here

  • 无法在其上运行代码的计算机:Windows Server 2012 R2版本6.2 Build9200。IIS版本8.5.9600.16384。

enter image description here

我尝试过的事情:

  • 再次清理/重建部署。
  • 删除objbin文件夹,然后再次发布和部署。
  • 按照建议的here删除了CachedAssessmb。
  • 将配置从Release更改为Debug
  • Azure SDK计算机上安装Windows Server 2012 R2
  • 尝试安装Microsoft.Azure.SignalR.AspNet的依赖项,而不直接安装Microsoft.Azure.SignalR.AspNet。错误似乎开始Microsoft.Azure.SignalR.Protocols已安装。 Microsoft.Azure.SignalR.Protocols的依赖项是:

enter image description here

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

我似乎找不到问题。

更新: 我将文件夹部署在上述Windows 10计算机上,并使用IIS Manager创建了一个应用程序。该应用程序可以在没有Visual Studio的同一台计算机上正常运行。

1 个答案:

答案 0 :(得分:0)

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

  1. .NET Core 2.2 SDK(仍然无法部署)
  2. .NET Framework 4.7.2开发包(要求重新启动,将其推迟)
  3. .NET Framework 4.6.1开发包

在安装.NET Framework 4.6.1 Dev Pack之后,我重新启动了。现在,部署可以工作

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

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

花费了很多时间解决此问题,因为在许多其他情况下也会出现 typeloadexception

希望此解决方案也能帮助其他人。