web-dev-qa-db-ja.com

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にアップグレードしようとしましたが、それでも助けにはなりませんでした。

誰もが同じ問題に直面しており、解決策は何でしたか?

29
neo112

この参照を、私が見つけた最新バージョン(現在は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>
49
Akira Yamamoto

おそらく、あなたの.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
Jim Bolla

私の場合、SignalR機能を持つWCFサービスをIIS=でホストし、IISマネージャーおよびサービスをホストしたアプリケーションに移動するとsvcファイルを右クリックしてBrowseをクリックすると、このエラーが発生していました。

Visual Studioで、Tools -> Library Package Manager -> Package Manager Console

WCFサービスをホストするWebサイトプロジェクトを選択し、次の2つのコマンドを次々に指定したことを確認しました。

uninstall-package Microsoft.AspNet.SignalR

install-package Microsoft.AspNet.SignalR

この後、ソリューションを再構築します。 IISマネージャーと、サービスをホストしているアプリケーションに移動しました] svcファイルを右クリックしてBrowseをクリックすると、IEで実行中のサービスを確認できました。

1
Ziggler