2015-05-28 6 views
6

मेरे पास एक काम करने वाला सिग्नलआर एप्लिकेशन है जो मुझे एकाधिक जावास्क्रिप्ट क्लाइंट कनेक्ट करने और डेटा का आदान-प्रदान करने की अनुमति देता है।HttpClientException सिग्नलआर से काम करने वाले हब से कनेक्ट करते समय .NET क्लाइंट

An exception of type 'Microsoft.AspNet.SignalR.Client.HttpClientException' occurred in mscorlib.dll but was not handled in user code 

Additional information: StatusCode: 500, ReasonPhrase: 'Internal Server Error', Version: 1.1, Content: System.Net.Http.StreamContent, Headers: 

{ 
    Transfer-Encoding: chunked 
    X-SourceFiles: =?UTF-8?B?QzpcVXNlcnNcRGFycmVuXERlc2t0b3BcQ29uc29sZUFwcGxpY2F0aW9uMVxXZWJBcHBsaWNhdGlvbjFcc2lnbmFsclxuZWdvdGlhdGU=?= 
    Cache-Control: private 
    Date: Thu, 28 May 2015 09:13:06 GMT 
    Server: Microsoft-IIS/8.0 
    X-AspNet-Version: 4.0.30319 
    X-Powered-By: ASP.NET 
    Content-Type: text/html; charset=utf-8 
} 

के रूप में कई चर संभव के रूप में मैं एक कंसोल में एक ब्रांड के नए वेब अनुप्रयोग में हब की नकल की और नेट ग्राहक कोड कॉपी निकालने के लिए: मैं एक नेट ग्राहक मैं निम्नलिखित त्रुटि मिलती है के साथ कनेक्ट करने की कोशिश की आवेदन। मुझे अभी भी एक ही अपवाद मिलता है।

Dim hubConnection As HubConnection 
Dim chatHubProxy As IHubProxy 

Public Async Sub RunTest() 
    System.Net.ServicePointManager.DefaultConnectionLimit = 10 

    hubConnection = New HubConnection("http://localhost:64400") 
    hubConnection.Credentials = Net.CredentialCache.DefaultCredentials 
    hubConnection.TraceLevel = TraceLevels.All 
    hubConnection.TraceWriter = Console.Out 

    chatHubProxy = hubConnection.CreateHubProxy("Chat") 

    AddHandler hubConnection.StateChanged, Sub(stateChange) Console.WriteLine("[" & DateTime.Now & "]: " & stateChange.OldState.ToString() & " => " & stateChange.NewState.ToString() & " " & hubConnection.ConnectionId) 

    chatHubProxy.On(Of String, String)("ReceiveMessage", Sub(from, message) Console.WriteLine(message)) 
    Await hubConnection.Start() 
End Sub 

यहाँ है सांत्वना उत्पादन:

09:21:54.3952161 - null - ChangeState(Disconnected, Connecting) 
[28/05/2015 10:21:54]: Disconnected => Connecting 
[28/05/2015 10:21:56]: Connecting => Disconnected 
09:21:56.8448452 - null - Disconnected 
09:21:56.8458461 - null - Transport.Dispose() 
09:21:56.8468465 - null - Closed 

यहाँ और मेरे हब कोड है: यहाँ मेरे मुवक्किल कोड है

public class ChatHub : Hub 
{ 
    public void SendMessage(string name, string message) 
    { 
     Clients.All.ReceiveMessage(name, message); 
    } 
} 
+0

की कोशिश करें (http [SignalR पर सर्वर का पता लगाने पर बारी]:। //www.asp। शुद्ध/signalr/अवलोकन/परीक्षण और डिबगिंग/सक्षम करने-signalr-ट्रेसिंग)। उम्मीद है कि सिग्नलआर त्रुटि लॉग करेगा ... –

उत्तर

10

यह एक छोटी सी गलती साबित हुआ है, लेकिन त्रुटि संदेश इतना बेकार था मुझे यकीन है कि अन्य एक ही मुद्दे से फंस जाएंगे। हब का नाम गलत था। जब मैंने "ChatHub" का उपयोग किया था, तो मैंने "चैट" का इस्तेमाल किया था।

यदि अपवाद 404 था, या "हब नहीं मिला" या ऐसा कुछ ऐसा था जो कुछ बर्बाद घंटों के बजाय एक आसान तय होता!

+4

यह भी हो सकता है यदि नाम सही है लेकिन 'हब' कक्षा सार्वजनिक नहीं है। –

+1

मुझे यह पता लगाने के लिए दिन का आधा दिन लगता है कि यह CreateHubProxy में टाइपो के कारण होता है! मुझे देर से बाध्यकारी और गैर-मजबूत टाइपिंग से नफरत है। –

+0

धन्यवाद इस दिन – Dinuka

1

रियल मुद्दा लेकिन मुझे लगता है कि यह है कि SignalR सर्वर लौटने स्थिति 500 ​​(आंतरिक सर्वर त्रुटि) का एहसास करने के लिए महत्वपूर्ण है हल किया गया था (नहीं बहुत जानकारीपूर्ण त्रुटि वास्तव में) सुरक्षा सुविधा है।

आप सर्वर त्रुटियों के बारे में अधिक जानकारी की जरूरत है, तो आप निम्न कर सकते हैं:

1) Enable tracing on server

और \ या

2) विस्तृत अपवाद संदेशों ग्राहक के लिए भेज सक्षम करें (नहीं करते कि उत्पादन में):

SignalR 1.x: RouteTable.Routes.MapHubs(new HubConfiguration { EnableDetailedErrors = true });

SignalR 2.x

public void Configuration(IAppBuilder app) 
{ 
     var hubConfiguration = new HubConfiguration 
     { 
#if DEBUG 
      EnableDetailedErrors = true 
#else 
      EnableDetailedErrors = false 
#endif 
     }; 

     app.MapSignalR(hubConfiguration); 
} 
3

में @ डैरेन के जवाब निकला मेरी समस्या के लिए समाधान @Michael टिलर की टिप्पणी है, तो मुझे लगता है कि यह अपने आप ही जवाब में यह सुनिश्चित करने के लिए उचित है:

हब वर्ग बदलने public पर मेरी समस्या हल हो गई। मैं एक उदाहरण है और यह लेख कि एक सार्वजनिक वर्ग कि Hub से विरासत है, और जब दृश्य स्टूडियो में एक नया वर्ग को जोड़ने बनाने के लिए कहा याद किया, डिफ़ॉल्ट रूप से यह

class TestHub 
{ 
} 

के रूप में यह बनाता है ... जो तकनीकी रूप से internal है (here देखें)। मेरे हिस्से पर अधिक सावधानीपूर्वक पढ़ने से यह रोका होगा, लेकिन अगर किसी और ने जल्दबाजी में बहुत बड़ा हो गया तो ... :)

0

मैं इसी तरह की छोटी गलती कर रहा था इसे समझने में कुछ घंटे लग गए।

[HubName("Hostsync")] // Missed to add this attribute in Hub of SignalR Self Host 
public class ChatHub : Hub 
{ 

} 

लेकिन मैं क्लाइंट में प्रॉक्सी नाम को परिभाषित करके कनेक्ट करने का प्रयास कर रहा था।

HostProxyName = "Hostsync"; 

बस सुनिश्चित करें कि ऐसी कोई गलती नहीं है। चूंकि आपको कनेक्शन प्रतिष्ठान के दौरान सटीक विस्तृत अपवाद नहीं मिलेगा।

नीचे दिए गए लिंक मुझे कुछ चीजें

Stackoverflow Question Answer Link

आशा इस मदद करता है पता करने के लिए मदद की,

संबंधित मुद्दे