SQL Server Broker キューでメッセージをリッスンするバックグラウンドで実行されている、リスナー クラスを含むプラグインを備えた ASP.NET MVC 4 プラグイン ベースの Web アプリケーションがあります。新しいメッセージが到着したら、接続されているすべてのクライアントにこれらをプッシュしたいと考えています。
クライアントからサーバーに送信するときに完全に機能する通知ハブを作成しましたが、クライアントに更新を送信するために使用するコードは何もしません。
var context = GlobalHost.ConnectionManager.GetHubContext<NotificationHub>();
context.Clients.All.dataUpdated(message.Data);
使ってみました
using (var timerScope = AutofacDependencyResolver.Current.ApplicationContainer.BeginLifetimeScope("httpRequest"))
{
var connMgr = timerScope.Resolve<IConnectionManager>();
var context = connMgr.GetHubContext<NotificationHub>();
context.Clients.All.dataUpdated(message.Data);
}
しかし、その後、「HttpContext が利用できないため、リクエストの有効期間スコープを作成できません」というエラー メッセージを含む InvalidOperationException しか取得しません。
私はWebリクエストの外で電話をかけようとしているので、十分に理解できます。
私がやろうとしていることはまったく可能ですか?webrequest を使用してそれ自体に接続してメッセージを送信する例をいくつか見てきましたが、よりクリーンな方法を探しており、本格的なメッセージ バスに行きたくありません。