Установка Microsoft.Azure.SignalR.AspNet приводит к тому, что метод не реализовал ошибку времени выполнения при развертывании на сервере, но отлично работает в Visual Studio 2017

Ошибка:

Метод 'MyController' в типе 'MyProject.AppStart.Selector' из сборки 'MyProject, Version=1.0.0.0, Culture= нейтральный, PublicKeyToken=......' не имеет реализации.

Фон: у меня есть ASP.NET проект с target рамки установлены .NET Framework 4.6.2, После установки Microsoft.Azure.SignalR.AspNet1.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.

  • Компьютер, на котором не работает код: Windows Server 2012 R2 Версия 6.2 Build 9200. IIS версия 8.5.9600.16384.

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

  • Очистите / Восстановите развертывание снова.
  • удалять 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 являются:

Все эти четыре зависимости добавляются при установке Microsoft.Azure.SignalR.Protocols то есть они еще не используются.

Я не могу найти проблему.

Обновление: я развернул папку на вышеупомянутой машине Windows 10 и использовал IIS Manager создать приложение. Приложение отлично работает на той же машине без Visual Studio.

1 ответ

Решение

В 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,

Потребовалось некоторое время, чтобы решить эту проблему, так как исключение типов может возникнуть во многих других сценариях.

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

Другие вопросы по тегам