Signalr: Newtonsoft.Jsonバージョン10.0をMicrosoft.AspNet.SignalR.Clientバージョン2.2.1.0で使用中にエラーが発生します。

作成日 2017年05月17日  ·  7コメント  ·  ソース: SignalR/SignalR

Newtonsoft.Jsonバージョン10.0をMicrosoft.AspNet.SignalR.Clientバージョン2.2.1.0で使用中にエラーが発生します。 SignalRで新しいHubConnectionを作成しているときに、以下のエラーが発生します。

Nuget PackageManagerからのPackageのインストールからNewtonsoft.Jsonバージョン10.0.0のリファレンスを提供しました。

例外メッセージ:ファイルまたはアセンブリを読み込めませんでした 'Newtonsoft.Json、Version = 6.0.0.0、Culture = neutral、PublicKeyToken = 30ad4fe6b2a6aeed'またはその依存関係の1つ。 システムは、指定されたファイルを見つけることができません。

スタックトレース :
Microsoft.AspNet.SignalR.Client.Connection..ctor(String url、String queryString)で
Microsoft.AspNet.SignalR.Client.HubConnection..ctor(String url、Boolean useDefaultUrl)で
Microsoft.AspNet.SignalR.Client.HubConnection..ctor(String url)で
MyNamespace.MyClass.ConnectToWebModuleHub()で

フュージョンログ:
===事前バインド状態情報===
ログ:DisplayName = Newtonsoft.Json、Version = 6.0.0.0、Culture = neutral、PublicKeyToken = 30ad4fe6b2a6aeed
(完全指定)
ログ:Appbase = file:/// C:/ Program Files(x86)/
約:空白
ログ:初期PrivatePath = NULL

アセンブリの呼び出し:Microsoft.AspNet.SignalR.Client、Version = 2.2.1.0、Culture = neutral、PublicKeyToken = 31bf3856ad364e35。

ログ:このバインドは、LoadFromロードコンテキストで開始されます。
WRN:ネイティブイメージはLoadFromコンテキストでプローブされません。 ネイティブイメージは、Assembly.Load()のように、デフォルトのロードコンテキストでのみプローブされます。
ログ:アプリケーション構成ファイルの使用:
ログ:ホスト構成ファイルの使用:
ログ:C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ config \ machine.configのマシン構成ファイルを使用しています。
ログ:ポリシー後の参照:Newtonsoft.Json、Version = 6.0.0.0、Culture = neutral、PublicKeyToken = 30ad4fe6b2a6aeed
ログ:同じバインドが以前に見られ、hr = 0x80070002で失敗しました。

最も参考になるコメント

@moozzyk返信ありがとうございます。

また、Nuget Package Managerを介してSignalRをインストールしました。現在、Newtonsoft Jsonを6.0.5バージョンに更新し、正常に動作しています。 では、 Microsoft.AspNet.SignalR.Clientバージョン2.2.1.0Newtonsoft.Jsonバージョン6.xとのみ互換性があるというのは本当ですか? Microsoft.AspNet.SignalR.Coreバージョン2.2.1.0Newtonsoft.Jsonバージョン10.xを使用しているので、正常に動作していますが、問題は発生していません。 Nuget Package Managerから両方をインストールしましたが、 Newtonsoft.Jsonバージョン6.0を検索しているので驚いています。

全てのコメント7件

たぶん、設定ファイルにassemblyBindingを追加してみてください。

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" />
  </dependentAssembly>
</assemblyBinding>

それはあなたのために働きますか?

@ Thiago-Caramelo返信ありがとうございます。

実際、この問題をここに追加する前に同じことを試しましたが、うまくいきませんでした。

@ hardikpatelse-バインディングリダイレクトが機能するはずです。 そうでない場合は、プロジェクトを表示する必要があります。 SignalRクライアントはNewtonsoft.Json6.0.4に依存しています。 AppDomainにロードできるアセンブリのバージョンは1つだけであり、バージョン10.xをインストールしてロードされた場合、SignalRはコンパイルされたバージョン6.xを見つけることができません。 バインディングリダイレクトを使用すると、要求されたものとは異なるバージョンのアセンブリを使用できます。 あなたの場合、これは起こっていないようです。 パッケージをインストールするときに、必要に応じてNuGetで適切なバインディングリダイレクトを追加する必要があると思います。

@moozzyk返信ありがとうございます。

また、Nuget Package Managerを介してSignalRをインストールしました。現在、Newtonsoft Jsonを6.0.5バージョンに更新し、正常に動作しています。 では、 Microsoft.AspNet.SignalR.Clientバージョン2.2.1.0Newtonsoft.Jsonバージョン6.xとのみ互換性があるというのは本当ですか? Microsoft.AspNet.SignalR.Coreバージョン2.2.1.0Newtonsoft.Jsonバージョン10.xを使用しているので、正常に動作していますが、問題は発生していません。 Nuget Package Managerから両方をインストールしましたが、 Newtonsoft.Jsonバージョン6.0を検索しているので驚いています。

マイナーリリースではメジャー依存バージョンを変更しないため、Newtonsoft.Json6.xに依存し続けます。 ユーザーは、依存関係の新しいバージョンを使用して強制することができます(そして多くの場合そうします)。 SignalR2.xがNewtonsoft.Json9.xまたは10.xで動作しないという報告は見たことがありません。

この問題は、Assembly Resolveを使用し、NewtonSoftJSONバージョン10.0のパスを指定することで解決されました。

こんにちは@hardikpatelse
FcmSharpとMicrosoft.AspNet.SignalR.Clientで同じ問題が発生します。
FcmSharpはFcmSharpを使用しますFcmSharpNewtonsoft.Json(> = 12.0.1)およびMicrosoft.AspNet.SignalR.Clientはnewtonsoft.json、バージョン= 6.0.0.0のみを使用します。
SQL CLRでFcmSharpを使用したいのですが、CREATEASSEMBLYでこのエラーが表示されます。

アセンブリ 'SqlLibrary'は、現在のデータベースに存在しないアセンブリ 'newtonsoft.json、version = 6.0.0.0、culture = neutral、publickeytoken = 30ad4fe6b2a6aeed。'を参照します。 SQL Serverは、参照アセンブリが元の場所と同じ場所から参照アセンブリを見つけて自動的にロードしようとしましたが、その操作は失敗しました(理由:2(システムは指定されたファイルを見つけることができません))。 参照されているアセンブリを現在のデータベースにロードして、要求を再試行してください。

アセンブリはどのように解決され、NewtonSoft JSONバージョン12.0のパスが与えられますか?

このページは役に立ちましたか?
0 / 5 - 0 評価