2017-06-18 18 views
5

साथ काम नहीं कर रहा मैं एक ASP.NET MVC 4 एप्लिकेशन (.NET 4.5) है और SIgnalR जैसे ही साथ प्रपत्र-आधारित प्रमाणीकरण (आईआईएस/आईआईएस एक्सप्रेस के माध्यम से आयोजित)SignalR विंडोज एकीकृत प्रमाणीकरण

ठीक काम करता है मैं के रूप में ऐप को विंडोज-एकीकृत प्रमाणीकरण में बदलें (<authentication mode="Windows"/> "web.config" में) यह काम करना बंद कर देता है।

jquery.signalR-2.2.2.min.js: 9 WebSocket कनेक्शन ws://localhost:51030/signalr/connect?transport=webSockets&blhablahblah में विफल: WebSocket हाथ मिलाना दौरान त्रुटि: अनपेक्षित प्रतिक्रिया कोड: 403

[Authorize] विशेषता जोड़ने के बाद मेरे हब में, त्रुटि

ws://localhost:51030/signalr/connect?transport=webSocketsblahblah पर वेबसेट कनेक्शन विफल: HTTP प्रमाणीकरण विफल रहा; कोई वैध क्रेडेंशियल्स उपलब्ध

एप्लिकेशन के अन्य हिस्सों ठीक काम कर रहे हैं, खिड़कियां प्रमाणीकरण सर्वर पर सक्षम है और काम करता है, आदि आदि

मैं इस का समाधान करते हैं?

और यदि यह किसी कारण से न सुलझा हुआ है (यह हो सकता है क्रोम WebSocket कनेक्शन या कुछ और पर खिड़कियों प्रमाणन का समर्थन नहीं) - कारण है कि यह गैर WebSocket प्रोटोकॉल के लिए वापस नहीं आता है? और मैं फ़ॉलबैक को कैसे बल दूं?

अद्यतन: मैंने एक जिथब मुद्दा https://github.com/SignalR/SignalR/issues/3953 बनाया है। समस्या यह नहीं है कि मैं कनेक्ट नहीं कर सकता। समस्या यह है कि मैं किसी अन्य परिवहन में वापस आने के लिए त्रुटि को संभाल नहीं सकता। न तो .fail().error() नहीं बुलाए जा रहे हैं। कोशिश करें पकड़ने में मदद नहीं करता है।

उत्तर

6

... 10 घंटे बाद ...

आंशिक रूप से हल

(मेरे अपने सवाल का जवाब) इसके साथ खेलने के बाद मैं इस बात की पुष्टि कर सकते हैं, कि मेरी हब के [Authorize] विशेषता जोड़ने (या वैकल्पिक रूप से, आपके "Startup.cs" में GlobalHost.HubPipeline.RequireAuthentication(); जोड़ना) वास्तव में मदद करता है। यह वैकल्पिक परिवहन के लिए अब पर वापस आ गया है, भले ही त्रुटि अभी भी ब्राउज़र के कंसोल में फेंक दी गई हो।

तुम भी जो परिवहन यह फोन करके, करने के लिए वापस गिर जाता है निर्दिष्ट कर सकते हैं:

$.connection.hub.start({ transport: ['webSockets', 'longPolling'] }); 

मामले में आप डिफ़ॉल्ट प्राथमिकता (मुझे लगता है कि पसंद नहीं है, "छिपा iframe" डिफ़ॉल्ट दूसरा विकल्प है)।

कारण

त्रुटि क्रोम के कारण होता है, यह WebSocket कनेक्शन पर NTLM समर्थन नहीं करता। काफी मजेदार, आईई, एमएस एज और फ़ायरफ़ॉक्स इसका समर्थन करते हैं ("क्रोम नया आईई है" हुह)।

वहाँ अगर कोई क्रोमियम devs के लिए किसी भी इनपुट जोड़ना चाहता है यह यहाँ https://bugs.chromium.org/p/chromium/issues/detail?id=423609 के लिए क्रोमियम बगट्रैकर में एक खुला मुद्दा है।

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