Конфликт SignalR 2.0.2 и Owin 2.0.0

Я пытаюсь заставить SignalR работать в проекте MVC5 с отдельными учетными записями.

Проект MVC имеет по умолчанию Owin 2.0.0, а все компоненты Owin. * также 2.0.0.

Итак, я использовал NuGet для получения всех пакетов SignalR, он автоматически разрешал зависимости и загружал v 2.0.2.

Проект запускает ошибку при запуске со следующим сообщением:

Не удалось загрузить файл или сборку 'Microsoft.Owin, Version = 2.0.1.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35'

Я также попробовал обновить Owin до 2.1.0, но это тоже не помогло.

Кто-нибудь сталкивался с той же проблемой и каково было решение?

Ответ 1

Вы можете обновить эти ссылки до последней найденной мной версии (теперь это 2.1.0):

Install-Package Microsoft.Owin -Version 2.1.0
Install-Package Microsoft.Owin.Security -Version 2.1.0

И убедитесь, что ваш Web.config имеет эти переадресации связывания для версии 2.1.0:

<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-2.1.0.0" newVersion="2.1.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-2.1.0.0" newVersion="2.1.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

Или вы можете обновить эти ссылки до версии 2.0.1:

Install-Package Microsoft.Owin -Version 2.0.1
Install-Package Microsoft.Owin.Security -Version 2.0.1

И убедитесь, что ваш Web.config имеет эти переадресации привязки для версии 2.0.1:

<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-2.0.1.0" newVersion="2.0.1.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-2.0.1.0" newVersion="2.0.1.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

Ответ 2

Возможно, вам нужна переадресация привязки в вашем .config

<configuration>
<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
            <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-2.0.2.0" newVersion="2.0.2.0" />
        </dependentAssembly>
        <dependentAssembly>
            <assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-2.0.2.0" newVersion="2.0.2.0" />
        </dependentAssembly>
    </assemblyBinding>
</runtime>
</configuration>

Ответ 3

В моем случае, когда я разместил свою службу WCF, которая имеет функцию SignalR в IIS, и когда я перехожу к моему диспетчеру IIS и к моему приложению, где я разместил свою службу, щелкните файл svc правой кнопкой мыши и нажмите Browse, я получаю эта ошибка. Поэтому я сделал следующее

В моей Visual Studio Tools -> Library Package Manager -> Package Manager Console

Я убедился, что выбрал проект своего сайта, на котором размещался мой WCF-сервис, и дал ниже двух команд один за другим

uninstall-package Microsoft.AspNet.SignalR

install-package Microsoft.AspNet.SignalR

После этого я просто перестраиваю свое решение. Пошел в диспетчер IIS и в мое приложение, где я разместил свою службу, щелкнув правой кнопкой мыши svc и нажав Browse, я смог увидеть, что моя служба работает в IE.