私は Visual Studio 2012 で SignalR を使い始めました。これまでのところ、基本的なこつをつかみ、この例をガイドしました (ページ内のコードを参照できます)。上記の例に REST サービスを追加することにしたので、それに基本的なサービスを追加するとうまくいきました。
私が実行したかった次のステップは、サービスと SignalR 間の通信を追加することでした。そのため、例が示した内容によると、プロジェクトの URL を介して HubConnection を作成するだけで済みました (この例では、 URL http:localhost:4200)。WorkerRoleHubConfiguration クラスを確認できます。次の行を持つメソッドがあります。
return RoleEnvironment.GetConfigurationSettingValue("GUI_URL");
GUI_URL は http:localhost:4200 です。
私のサービスクラスでは、次のメソッドを追加しました:
var url = RoleEnvironment.GetConfigurationSettingValue("http://localhost:4200");
try
{
HubConnection _connection = new HubConnection(url);
IHubProxy _hub = _connection.CreateProxy("SiteMonitR");
_hub.Invoke("displayResult");
}
catch (Exception ex)
{
error = ex.ToString();
}
しかし、これは例外をスローします。
サーバークラスで行われているのと同じようにすべてを行っているため、例と同じ方法でURLを取得できる理由がわかりません。
私が達成しようとしている目標は、エンドポイントがアクセスされ、システムで何かが変更されたときに、SignalR がそれに接続されているクライアントに通知することです。
誰かが私の仕事の何が悪いのかを理解するのを手伝ってくれることを願っています.
編集
私は ServiceConfiguration.Local.cscfg、私の ServiceConfiguration.Cloud.cscfg および ServiceDefinition.csdef ファイルをここに参照として追加しています。問題はそこにあるはずですが、正直なところ、これが機能しない理由についてはわかりませんでした.
編集2
この行で次の例外が発生しますvar url = RoleEnvironment.GetConfigurationSettingValue("http://localhost:4200");
例外は次のとおりです。
SEHExcetion occurred. External component has thrown an exception.