c# 401 अनधिकृत त्रुटि वेब एपीआई एमवीसी विंडोज़ प्रमाणीकरण




iis-7 asp.net-web-api (4)

मुझे 401 अनधिकृत त्रुटि मिल रही है मेरी वेब सेवा एमवीसी में लिखी गई है IIS में कॉन्फ़िगर करने के लिए विंडोज प्रमाणीकरण नीचे बुद्धिमत्ता की स्क्रीन शॉट है

जब मैंने ब्राउज़र से यूआरएल मारा तो मुझे उपयोगकर्ता नाम और पासवर्ड दर्ज करने के लिए पॉपअप विंडो देता है। मैं पॉपअप विंडो कैसे से बच सकता हूं?

मैं इस वेब एपीआई को दूसरी विंडो सर्विस से कॉल कर रहा हूं।


मेरे 2 सेंट: मुझे एक ऐसी परिस्थिति का सामना करना पड़ा जहां हमने एक वेब पेज को अनुरोध करते समय एक HTTP 401 से परेशान किया था जब वेब अनुप्रयोग तैनात किया गया था। हम अपने पैकेजिंग के रूप में वाईएक्स का इस्तेमाल करते हैं और समाधान स्थापित करते हैं। इस विशिष्ट मामले में, छवि को इंस्टॉलर द्वारा पैक नहीं किया जा रहा था और इसीलिए तैनात किए गए उदाहरण पर पथ और न ही मौजूद था।

कोई सोच सकता है कि 401 में जब 404 (पाया नहीं) की उम्मीद होती है - मेरी समझ यह है कि चूंकि हमारा पथ सीधे रूट के नीचे नहीं था, लेकिन जड़ / सामग्री / छवियों / छवि जैसा कुछ है, और मैंने बनाया अनाम अनुरोध, मुझे एक 401 (अनधिकृत) मिला क्योंकि मेरे पास निर्देशिका ब्राउज़ करने का उपयोग नहीं था। मैंने अपने अनुरोध पर एक प्राधिकरण शीर्षलेख जोड़कर इसकी पुष्टि की और फिर उम्मीद के अनुसार मुझे 404 मिल गया।


आप URL के भाग के रूप में उपयोगकर्ता नाम और पासवर्ड निर्दिष्ट कर सकते हैं:

http://username:[email protected]ple.com/foo/bar/baz

नोट: सिर्फ इसलिए कि इसका मतलब यह नहीं है कि आपको चाहिए हालाँकि यह चीजों का परीक्षण करने का एक अस्थायी समाधान हो सकता है, लेकिन मैं उत्पादन में ऐसा करने का सुझाव नहीं देता। और पुराने दिनों में, हमने ऐसा किया है। लेकिन @DiskJunky बताते हैं, "यूआरएल बहुत कुछ / किसी को भी आसानी से दिखाई देते हैं" जिसमें आपका ब्राउज़र इतिहास, सर्वर लॉग्स और शायद खराब है


मुझे संदेह है कि दो वेब सेवाओं को एक ही सर्वर पर होस्ट किया जा सकता है इस मामले में, समस्या लूपबैक चेक के कारण हो सकती है परीक्षण करने के लिए, पूरी तरह से योग्य डोमेन नाम का उपयोग किए बिना सेवा को संदर्भित करने का प्रयास करें और देखें कि क्या यह काम करता है। यदि ऐसा होता है, तो निर्दिष्ट करें कि कौन से होस्ट नाम स्थानीय कंप्यूटर पर हैं

विधि 1: होस्ट नाम निर्दिष्ट करें (यदि NTLM प्रमाणीकरण की आवश्यकता है तो पसंदीदा विधि) ( http://support.microsoft.com/kb/896861 )

मेजबान नाम निर्दिष्ट करने के लिए जो लूपबैक पते पर मैप किए जाते हैं और आपके कंप्यूटर पर वेब साइट से कनेक्ट कर सकते हैं, इन चरणों का पालन करें:

  1. DisableStrictNameChecking रजिस्ट्री प्रविष्टि को 1 पर सेट करें। यह कैसे करें के बारे में अधिक जानकारी के लिए, Microsoft ज्ञानकोष में आलेख देखने के लिए निम्न आलेख संख्या पर क्लिक करें: 281308 किसी Windows 2000-आधारित कंप्यूटर या Windows Server 2003- आधारित कंप्यूटर किसी अन्य नाम के साथ काम नहीं कर सकता है
  2. प्रारंभक्लिक करें, चलाएँ क्लिक करें, टाइप करें regedit पर राइट-क्लिक करें, और उसके बाद OK।
  3. रजिस्ट्री संपादक में, की स्थिति जानें और उसके बाद निम्न रजिस्ट्री कुंजी को क्लिक करें: HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ LSA \ MSV1_0
  4. MSV1_0 पर राइट-क्लिक करें, नया इंगित करें, और उसके बाद मल्टी-स्ट्रिंग मान पर क्लिक करें।
  5. BackConnectionHostNames टाइप करें, और उसके बाद ENTER दबाएँ
  6. BackConnectionHostNames राइट-क्लिक करें, और उसके बाद संशोधित करें क्लिक करें
  7. मान डेटा बॉक्स में, स्थानीय कंप्यूटर पर मौजूद साइटों के लिए होस्ट नाम या होस्ट नाम टाइप करें, और उसके बाद OK पर क्लिक करें।
  8. रजिस्ट्री संपादक से बाहर निकलें, और उसके बाद IISAdmin सेवा को पुनरारंभ करें

http://blogs.4ward.it/impersonation-issues-401-error-mvc-and-web-api-4-5/

** एक उत्तर के रूप में संपादित करें और संदर्भित लिंक से विस्तृत चरण शामिल करें


यदि आप WebClient का उपयोग कर रहे हैं तो आपको श्रेय को सेट करना होगा। आप विंडोज़ ऐप से वेब एपीआई को कैसे बुला रहे हैं?





http-status-code-401