ASP.NET Core 3.0 Blazor(サーバー側)アプリケーションとAzure SignalR Serviceを接続しようとしています。最終的に、SignalRクライアント(サービス)をいくつかのBlazorコンポーネントに注入して、UI / DOMをリアルタイムで更新できるようにします。
私の問題は.StartAsync()
、ハブ接続でメソッドを呼び出すと、次のメッセージが表示されることです。
応答ステータスコードが成功を示さない:404(見つかりません)。
BootstrapSignalRClient.cs
このファイルは、URL、接続文字列、キー、メソッド名、ハブ名など、SignalRサービスの構成を読み込みます。これらの設定は静的クラスに取り込まれ、SignalRServiceConfiguration
後で使用されます。
public static class BootstrapSignalRClient
{
public static IServiceCollection AddSignalRServiceClient(this IServiceCollection services, IConfiguration configuration)
{
SignalRServiceConfiguration signalRServiceConfiguration = new SignalRServiceConfiguration();
configuration.Bind(nameof(SignalRServiceConfiguration), signalRServiceConfiguration);
services.AddSingleton(signalRServiceConfiguration);
services.AddSingleton<ISignalRClient, SignalRClient>();
return services;
}
}
SignalRServiceConfiguration.cs
public class SignalRServiceConfiguration
{
public string ConnectionString { get; set; }
public string Url { get; set; }
public string MethodName { get; set; }
public string Key { get; set; }
public string HubName { get; set; }
}
SignalRClient.cs
public class SignalRClient : ISignalRClient
{
public delegate void ReceiveMessage(string message);
public event ReceiveMessage ReceiveMessageEvent;
private HubConnection hubConnection;
public SignalRClient(SignalRServiceConfiguration signalRConfig)
{
hubConnection = new HubConnectionBuilder()
.WithUrl(signalRConfig.Url + signalRConfig.HubName)
.Build();
}
public async Task<string> StartListening(string id)
{
// Register listener for a specific id
hubConnection.On<string>(id, (message) =>
{
if (ReceiveMessageEvent != null)
{
ReceiveMessageEvent.Invoke(message);
}
});
try
{
// Start the SignalR Service connection
await hubConnection.StartAsync(); //<---I get an exception here
return hubConnection.State.ToString();
}
catch (Exception ex)
{
return ex.Message;
}
}
private void ReceiveMessage(string message)
{
response = JsonConvert.DeserializeObject<dynamic>(message);
}
}
.NET CoreでSignalRを使用した経験があります。追加すると、アプリ構成でハブStartup.cs
を使用.AddSignalR().AddAzureSignalR()
してマップするファイルを作成し、この方法で特定の「構成」パラメーターを確立する必要があります(つまり、接続文字列)。
私の状況ではHubConnectionBuilder
、SignalRサービスへの認証のための接続文字列またはキーはどこで取得できますか?
404メッセージが欠落したキー/接続文字列の結果である可能性はありますか?
.WithUrl(signalRConfig.Url + signalRConfig.HubName)
これにより正しいURLが生成されることを確認できますか?(ブレークポイントまたはログによるか?)