2015-05-20 6 views
10

मेरे पास मेरे एप्लिकेशन में सॉकेट अधिसूचना है जो स्थानीय रूप से चलाने पर बहुत अच्छा काम करती है, लेकिन जब मैं अपने वीएम पर तैनात करता हूं, तो यह निम्नलिखित संदेश देने की शिकायत करता है।सिग्नलआर "वार्ता अनुरोध के दौरान त्रुटि"

Error: Error during negotiation request. 
    at Object.signalR._.error (jquery.signalR.js:178) 
    at signalR.fn.signalR.start.onFailed (jquery.signalR.js:644) 
    at Object.signalR.fn.signalR.start.connection._.negotiateRequest.signalR.transports._logic.ajax.error (jquery.signalR.js:664) 
    at n.Callbacks.j (jquery.js:3094) 
    at Object.n.Callbacks.k.fireWith [as rejectWith] (jquery.js:3206) 
    at x (jquery.js:8261) 
    at XMLHttpRequest.n.ajaxTransport.k.cors.a.crossDomain.send.b (jquery.js:8600) 

यह डोमेन के बीच जा रहा है, लेकिन मेरा मानना ​​है कि मैं पिछले CORS मुद्दों मिल गया है, लेकिन मैं गलत हो सकता है।

संपादित

यहाँ अतिरिक्त जानकारी मुझे पता है कि के लिए कहा जाएगा है।

अनुरोध:

GET http://path.to.my.vm/api/notifications/emmit/negotiate?clientProtocol=1.5&connectionData=%5B%7B%22name%22%3A%22testemitter%22%7D%5D&_=1432140840826 HTTP/1.1 
Host: path.to.my.vm 
Connection: keep-alive 
Accept: text/plain, */*; q=0.01 
Origin: http://localhost:8100 
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.152 Safari/537.36 
Content-Type: application/x-www-form-urlencoded; charset=UTF-8 
Referer: http://localhost:8100/ 
Accept-Encoding: gzip, deflate, sdch 
Accept-Language: en,fr;q=0.8,en-US;q=0.6 

प्रतिक्रिया:

HTTP/1.1 500 Internal Server Error 
Date: Wed, 20 May 2015 17:01:18 GMT 
Server: Mono-HTTPAPI/1.0 
Access-Control-Allow-Origin: * 
Access-Control-Allow-Methods: POST, GET, OPTIONS, DELETE, PUT 
Access-Control-Max-Age: 1000 
Access-Control-Allow-Headers: x-requested-with, Content-Type, origin,authorization, accept, client-security-token 
Content-Length: 0 
Connection: close 

संपादित

CORS समर्थन सर्वर पर सेटअप है।

app.UseCors(CorsOptions.AllowAll); 
app.MapSignalR("",new HubConfiguration() 
    { 
     EnableJavaScriptProxies = true 
    }); 
+0

क्या आपने सर्वर पर कॉर्स समर्थन स्थापित किया था? विशेष रूप से, आपको क्रॉस-डोमेन अनुरोधों को सक्षम करने के लिए अपनी कॉल को MapHubs में बदलने की आवश्यकता है। –

+0

@ विलियमक्सिफारास हां, मैंने अभी अपनी पोस्ट संपादित की है। मेरे पास 'UseCors (CorsOptions.AllowAll) ' – TheJediCowboy

+0

है क्या आप वाकई सीओआरएस हैं जो इस मुद्दे का कारण बन रहे हैं? मैं यह सुनिश्चित करने के लिए कि वास्तव में ऐप वास्तव में काम कर रहा है, सीओआरएस के बिना पहले कोशिश करें (उदा। एक त्वरित और गंदे सी # क्लाइंट बनाएं)। अभी आप गलत समस्या को हल करने की कोशिश कर रहे हैं। – Pawel

उत्तर

3

मैं एक ही समस्या थी जब अपने वेब परियोजना से signalR हब से कनेक्ट कर रहा तो मैं web.config फ़ाइल में नियम के पुनर्लेखन के लिए

<add input="{REQUEST_URI}" pattern="^/(signalr)" negate="true" /> 

जोड़ने तो signalR हब पहुंच योग्य बन गया।

मेरे क्लाइंट हब कनेक्शन कोड नीचे

$.hubConnection('/signalr', { useDefaultPath: false }); 
+0

क्या आप साझा कर सकते हैं कि पूर्ण पुनर्लेखन नियम कैसा दिखता है? – JacobIRR

5

है इसके अलावा, आपके signalr मेजबान पर सक्षम है यह सुनिश्चित करें WebSockets बनाते हैं। यदि यह एक विंडोज पीसी है तो जांचें कि नियंत्रण कक्ष-> प्रोग्राम्स-> विंडोज़ सुविधाओं को चालू या बंद करें में websockets सक्षम है या नहीं।

यदि यह एक विंडोज सर्वर है, तो माइक्रोसॉफ्ट वेबस्केट http://www.iis.net/learn/get-started/whats-new-in-iis-8/iis-80-websocket-protocol-support को सक्षम करने के तरीके पर चरण-दर-चरण निर्देश प्रदान करता है।

मेरे पास सिग्नल कॉन्फ़िगरेशन में सीओआरएस सेटअप था लेकिन फिर भी वही त्रुटि मिली और यह पता चला कि यह मेरा मुद्दा था। आशा करता हूँ की ये काम करेगा!

+0

अफसोस की बात यह है कि इसने मेरे मामले में इस मुद्दे को हल नहीं किया –

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