मैं अपने ASP.NET Core 3.0 Blazor (सर्वर-साइड) एप्लिकेशन और एज़्योर सिग्नलआर सर्विस के बीच संबंध बनाने की कोशिश कर रहा हूं। मैं अपने सिग्नलआर क्लाइंट (सेवा) को कुछ ब्लेज़र घटकों में इंजेक्ट करना समाप्त करूंगा ताकि वे मेरे UI / DOM को रियलटाइम में अपडेट कर सकें।
मेरा मुद्दा यह है कि .StartAsync()
हब कनेक्शन पर अपनी विधि को कॉल करने पर मुझे निम्न संदेश मिल रहा है :
प्रतिक्रिया स्थिति कोड सफलता का संकेत नहीं देता है: 404 (नहीं मिला)।
BootstrapSignalRClient.cs
यह फ़ाइल URL, कनेक्शन स्ट्रिंग, कुंजी, विधि नाम और हब नाम सहित सिग्नलआर सेवा के लिए मेरे कॉन्फ़िगरेशन को लोड करती है। इन सेटिंग्स को स्टैटिक क्लास में कैप्चर 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 कोर के साथ सिग्नलआर का उपयोग करने का अनुभव है जहां आप इसे जोड़ते हैं ताकि Startup.cs
फ़ाइल का उपयोग कर सकें.AddSignalR().AddAzureSignalR()
एप्लिकेशन कॉन्फिग में हब मैप करें और इसे इस तरह से करने के लिए कुछ 'कॉन्फ़िगरेशन' मापदंडों को स्थापित करने की आवश्यकता होती है (यानी कनेक्शन स्ट्रिंग)।
मेरी स्थिति को देखते हुए, HubConnectionBuilder
सिग्नल स्ट्रिंग या सिग्नलआर सेवा को प्रमाणित करने के लिए एक कुंजी कहां मिलती है?
क्या यह संभव है कि 404 संदेश गुम कुंजी / कनेक्शन स्ट्रिंग का परिणाम है?
Uri
और उरी (उड़ी, स्ट्रिंग) के
.WithUrl(signalRConfig.Url + signalRConfig.HubName)
क्या आप यह सत्यापित कर सकते हैं कि परिणाम सही Url है? (ब्रेकपॉइंट या लॉगिंग द्वारा?)