Установка Microsoft.Azure.SignalR.AspNet приводит к тому, что метод не реализовал ошибку времени выполнения при развертывании на сервере, но отлично работает в Visual Studio 2017 - PullRequest
0 голосов
/ 15 февраля 2019

Ошибка:

Метод 'MyController' в типе 'MyProject.AppStart.Selector' из сборки 'MyProject, Версия = 1.0.0.0, Культура = нейтральная, 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 Сборка9200. Версия IIS 8.5.9600.16384.

enter image description here

Что я пробовал:

  • Очистите / Восстановите развертывание снова.
  • Удалите папку obj и bin, снова опубликуйте и разверните.
  • Удалил CachedAssessmbly в соответствии с предложением здесь .
  • Измените конфигурацию с 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 голосов
/ 17 февраля 2019

На машине 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 Dev Pack

После установки .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 может возникнуть во многих других сценариях.

Надеюсь, что это решение поможет и другим людям.

...