1

私のプロジェクトでは、SignalR は正常に動作しています。しかし、Web ファームにロード バランシングが導入されたため、次の記事に従ってバックプレーンと SQL を使用する予定です: http://www.asp.net/signalr/overview/performance/scaleout-with-sql-server

Microsoft.AspNet.SignalR および Microsoft.AspNet.SignalR.SqlServer に最新のパッケージ (バージョン 2.2.0) を使用し、4.5 .Net フレームワークを選択すると、バックプレーンは正常に動作します。ただし、いくつかの理由で、.Net 4.0 バージョンに固執する必要があり、Owin は使用しません。Microsoft.AspNet.SignalR および Microsoft.AspNet.SignalR.SqlServer のパッケージをバージョン 1.1.4 または 1.2.2 でインストールし、.Net 4.0 で動作させると、SignalR は正常に動作するように見えますが、バックプレーン (SQL を使用) は動作しません。データベースにテーブルが作成されていないため、開始されます。トレースを有効にすると、トレース ファイルはありません。トランスポート関連のトレース ファイルのみが生成されます。global.asax.cs で以下のコードを使用しています。

// Signalr connection string 
var signalRConnectionstring = ConfigurationManager.ConnectionStrings["SignalR"].ToString();
GlobalHost.DependencyResolver.UseSqlServer(signalRConnectionstring);

 // Register the default hubs route: ~/signalr
 RouteTable.Routes.MapHubs();
4

1 に答える 1

2

最後に、解決策を見つけることができました。このエラーは、.Net 4.0 の問題であると私を誤解させました。私のプロジェクトでは実行時例外がスローされなかったため、デバッグは役に立ちませんでした。コードを静的に分析したところ、SQLServer for SignalR の依存関係リゾルバーに問題があることがわかりました。global.asax の行の下では、依存関係が解決されていませんでした (また、例外がスローされていませんでした)

GlobalHost.DependencyResolver.UseSqlServer(signalRConnectionstring);

これは、プロジェクトで Unity を使用しているためです。

解決策は簡単でした.SignalRを解決した後、SignalRのSQLServerを解決する必要がありました.私のプロジェクトにはすでに1つのカスタムクラスがあります. 最初にこの方向を見ればよかったのに、時間を大幅に節約できたでしょう。

于 2016-03-16T14:46:01.100 に答える