2014-11-11 5 views
26

मैं एमवीसी अनुप्रयोग में सिग्नल का उपयोग करने का प्रयास करता हूं। यह अच्छी तरह से काम करता है, लेकिन मैं क्रोम कंसोलसिग्नलआर एमवीसी 5 वेबसाइट्स कोई मान्य प्रमाण-पत्र

WebSocket connection to 'ws://localhost:18245/signalr/connect?transport=webSockets&clientProtocol=1.4&connectionToken=bNDGLnbSQThqY%2FSjo1bt 
8%2FL45Xs22BDs2VcY8O7HIkJdDaUJ4ftIc54av%2BELjr27ekHUiTYWgFMfG6o7RaZwhf 
fpXavzWQ1jvkaxGm5rI%2BWtK7j0g1eQC2aOYP366WmRQLXCiYJfsm4EbwX6T8n2Aw 
%3D%3D&connectionData=%5B%7B%22name%22%3A%22importerhub% 
22%7D%5D&tid=9' failed: HTTP Authentication failed; no valid credentials available 

अजीब बात यह है कि jQuery विधि मैं हब से अधिक नियंत्रक से फोन ठीक काम करता है है में निम्न त्रुटि मिलता है।

jQuery:

$(function() { 
      // Initialize the connection to the server 
      var importerHub = $.connection.importerHub; 

      // Preparing a client side function 
      // called sendMessage that will be called from the server side 
      importerHub.client.sendMessage = function (message) { 
       showOrUpdateSuccessMessage(message); 
      }; 
      $.connection.hub.start(); 
     }); 

नियंत्रक:

var hubContext = GlobalHost.ConnectionManager.GetHubContext<ImporterHub>(); 
      hubContext.Clients.All.sendMessage("All operations complete"); 

मैं नेट v4.5.1, SignalR v2.1.2.0 का उपयोग और Windows प्रमाणीकरण के साथ 8.5 IIS।

मैं इस त्रुटि को कैसे ठीक कर सकता हूं?

उत्तर

38

ऐसा लगता है कि आप क्रोम समस्या में भाग रहे हैं। समस्या यह है कि क्रोम वेबसाकेट्स के लिए विंडोज प्रमाणीकरण को सही ढंग से संभाल नहीं करता है।

https://code.google.com/p/chromium/issues/detail?id=123862

कि इस मुद्दे को बेसिक और डाइजेस्ट प्रमाणीकरण के लिए हल किया गया है, लेकिन विंडोज के लिए नहीं:

नीचे प्रारंभिक मुद्दा एक जोड़ी साल पहले प्रस्तुत रिपोर्टिंग कि क्रोम HTTP प्रमाणीकरण के किसी भी रूप का समर्थन नहीं किया है (एनटीएलएम/वार्तालाप) प्रमाणीकरण। एक महीने से पहले कम बनाई WebSockets के साथ Windows प्रमाणीकरण के लिए Chrome समर्थन पर प्रगति को ट्रैक करने में कोई समस्या हुई:

https://code.google.com/p/chromium/issues/detail?id=423609

जाहिर है, Windows प्रमाणीकरण के साथ इस मुद्दे को आंशिक रूप से क्रोम देव चैनल में तय हो गई है, लेकिन केवल तभी वेबसॉकेट स्थापित करने से पहले क्लाइंट पहले ही सर्वर से प्रमाणीकृत हो चुका है।

कारण आप अभी भी अपने नियंत्रक से sendMessage पर कॉल कर सकते हैं क्योंकि WebSocket कनेक्शन विफल होने पर साइनलआर स्वचालित रूप से वेबस्केट्स (यानी सर्वर से भेजे गए ईवेंट या लंबे मतदान) के अलावा किसी अन्य परिवहन का उपयोग करने के लिए वापस आ जाता है। क्रोम सिग्नलआर के अन्य ट्रांसपोर्ट के साथ विंडोज प्रमाणीकरण को सही तरीके से संभाल देगा।

मैं कुछ भी नहीं बदलने का सुझाव देता हूं। ऐसा लगता है कि क्रोम अंततः वेबसाकेट के लिए विंडोज प्रमाणीकरण का समर्थन करेगा।

आपके क्रोम कंसोल में त्रुटि के अलावा एकमात्र वास्तविक समस्या यह है कि क्रोम में सिग्नल कनेक्शन स्थापित करने में थोड़ा समय लग सकता है। यदि यह एक बड़ा मुद्दा है, तो आप हमेशा specify what transports the client should attempt using कर सकते हैं। तो क्रोम पर, आप केवल serverSentEvents और longPolling को आजमा सकते हैं, लेकिन तब जब क्रोम समस्या को हल करता है, तो आप अपना कोड बदलने तक सबसे अच्छा संभव परिवहन का उपयोग नहीं करेंगे।

+2

धन्यवाद, त्रुटि विकल्प 'सर्वरसेन्ट एवेन्ट्स' और 'लांगपॉलिंग' के साथ त्रुटि का अपमान। – Konobi

+0

बस माइक्रोसॉफ्ट एज (नया इंटरनेट एक्सप्लोरर) का इस्तेमाल किया और –

+2

@FindOut_Quran हां काम किया, यह क्रोम में एक मुद्दा है। यह अन्य ब्राउज़रों में सही ढंग से काम करना चाहिए। हालांकि, हमारे पास हमेशा यह नियंत्रित करने की विलासिता नहीं होती है कि अन्य लोग इसका उपयोग करने के लिए किस ब्राउज़र का उपयोग करते हैं। –

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