Конфликт 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.