ASP.NET Core 3.0 Blazor (서버 측) 응용 프로그램과 Azure SignalR 서비스를 연결하려고합니다. 최종적으로 몇 가지 Blazor 구성 요소에 SignalR 클라이언트 (서비스)를 주입하여 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 메시지가 누락 된 키 / 연결 문자열의 결과 일 수 있습니까?
Uri
하고 Uri (Uri, string)
.WithUrl(signalRConfig.Url + signalRConfig.HubName)
이것이 올바른 URL을 초래하는지 확인할 수 있습니까? (브레이크 포인트 또는 로깅으로)