VS2013 में डिबगिंग के समय प्रमाणीकरण मुद्दा - आईआईएस एक्सप्रेस


103

जब मैं विजुअल स्टूडियो 2013 में डीबगिंग कर रहा हूं तो विंडोज़ यूज़रनेम लेने की कोशिश कर रहा हूं। मैं बस इसका उपयोग कर रहा हूं:

httpcontext.current.user.identity.name

अगर मैं इसे अपने देव सर्वर पर चलाता हूं तो यह ठीक काम करता है, अगर मैं इसे विजुअल स्टूडियो के किसी भी पिछले संस्करण पर डिबग मोड में चलाता हूं तो यह भी ठीक काम करता है।

मेरी समस्याएं हैं - अगर मैं इसे विजुअल स्टूडियो 2013 पर चलाऊंगा तो मुझे एक खाली स्ट्रिंग मिलेगी।

मेरा वेब कॉन्फिग इस प्रकार है।

<system.web>
    <authentication mode="Windows"/>
    <identity impersonate="false"/>
    <authorization>
       <allow users="*"/>
    </authorization>
    <compilation debug="true" strict="false" explicit="true" targetFramework="4.0"/>
    <customErrors mode="Off"/>
</system.web>

जवाबों:


215

मैंने वीएस 2012 से सिर्फ वीएस 2013 को अपग्रेड किया था और वर्तमान उपयोगकर्ता पहचान (HttpContext.User.Identity) अनाम के रूप में आ रही थी।

मैंने IIS एक्सप्रेस applicationhost.config को बदलने की कोशिश की, कोई फर्क नहीं पड़ा।

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

बेनामी प्रमाणीकरण अक्षम करें और Windows प्रमाणीकरण सक्षम होने के लिए बदलें।

ग्रेवी की तरह काम करता है :)


10
उस एक के लिए धन्यवाद। मुझे विश्वास नहीं हो रहा है कि उन्होंने इसे एक 'एन्हांसमेंट' के रूप में जोड़ा है। यही web.config के लिए है। अब हम भरोसा नहीं कर सकते कि हम web.config में क्या देखते हैं। प्रतिभाशाली।
Trucker_jim

4
मेरा मानना ​​है कि यह स्वीकृत उत्तर की तुलना में बेहतर दृष्टिकोण है, क्योंकि यह IIS एक्सप्रेस पर चलने वाले अन्य एप्लिकेशन को प्रभावित नहीं करेगा।
निहार

बहुत बहुत धन्यवाद। यह मेरे लिए भी किया! एक विजुअल स्टूडियो 2008 प्रोजेक्ट था जिसे मैंने विजुअल स्टूडियो 2013 में अपग्रेड किया।
रोब के।

वीएस 2012 में मैंने उपयोग किया: "विज़ुअल स्टूडियो डेवलपमेंट सर्वर का उपयोग करें"। तो एक उन्नयन और यह काम किया। भले ही अब यह IIS एक्सप्रेस चलाता है।
थॉमस कोएले

यह एक स्वीकृत जवाब होना चाहिए, अगर आपने वीएस 2013 में अपग्रेड किया है।
निशांत

130

जैसा कि मैं इस पर शोध कर रहा था, मुझे मेरा उत्तर मिल गया, लेकिन इंटरनेट पर इसका उत्तर नहीं मिल रहा था, इसलिए मैंने सोचा कि मैं इसे साझा करूंगा:

मैंने अपनी Applicationhost.config फ़ाइल को संशोधित करके अपना मुद्दा ठीक किया। मेरी फ़ाइल "\ My Documents \ IISExpress \ config" फ़ोल्डर में सहेजी गई थी।

ऐसा लगता है कि VS2013 मेरी web.config फ़ाइल को अनदेखा कर रहा था और विभिन्न प्रमाणीकरण विधियों को लागू कर रहा था।

मुझे नीचे की तरह देखने के लिए फ़ाइल के इस हिस्से को संशोधित करना पड़ा। सही मायने में, मैंने केवल झूठे होने के लिए गुमनाम ऑथेंटिकेशन को संशोधित किया और विंडोज़ ऑथेंटिकेशन मोड को सच किया।

<authentication>

  <anonymousAuthentication enabled="false" userName="" />

  <basicAuthentication enabled="false" />

  <clientCertificateMappingAuthentication enabled="false" />

  <digestAuthentication enabled="false" />

  <iisClientCertificateMappingAuthentication enabled="false">
  </iisClientCertificateMappingAuthentication>

  <windowsAuthentication enabled="true">
    <providers>
      <add value="Negotiate" />
      <add value="NTLM" />
    </providers>
  </windowsAuthentication>

</authentication>

2
मुझे यह करने के लिए VS2013 में डिबगिंग प्राप्त करने के लिए IIS एक्सप्रेस का उपयोग करके मज़बूती से काम करना था। इसके बिना, एक बार ठीक काम करने लगता था, फिर उसके बाद 401। (1) क्या कोई AppCmd ​​कमांड है जो एप्लिकेशनहोस्ट.कॉन्फ़िग फ़ाइल को बदल देगा, और (2), वेब प्रोजेक्ट पर F4 मुझे अनाम बेनामी स्विच को बंद करने देता है और Windows प्रामाणिक चालू करता है। यह देखते हुए कि VS2012 में ठीक काम किया गया, VS2013 में 401 मुक्त देव वातावरण का उत्पादन नहीं किया गया।
IanT8

4
@ नील, तुमने मेरा दिन बचाया। BTW: इसे बंद करना जरूरी नहीं है anonymousAuthentication। यह चालू करने के लिए पर्याप्त है windowsAuthentication। ये सेटिंग्स नियंत्रित करती हैं कि वेब साइटों को कौन से प्रमाणीकरण तंत्र का उपयोग करने की अनुमति है।
चिकोडोरो

+1 के रूप में ... मेरे स्थानीय IISExpress isntance के साथ थोड़ी देर के लिए इस नेगिंग मुद्दे को हल करने की कोशिश कर रहा था
जेफ लुईस

आह, यह कैसे करना है। प्रतिभा। इस टिप के लिए धन्यवाद, वास्तव में उपयोगी!
माइक Gledhill

1
मैं 401 के बिना एक webservice कॉल (WSE3 के साथ) का परीक्षण करने में सक्षम होने के लिए "नेगोशिएट" को निकालना पड़ा।
Wolf5

41

विज़ुअल स्टूडियो 2013 और वीएस 15 में (लेकिन मुझे लगता है कि यदि सभी अन्य संस्करणों के लिए समान है) बस F4 दबाएं और इस दो गुणों को बदलें: - बेनामी प्रमाणीकरण: अक्षम करें - Windows प्रमाणीकरण: सक्षम करें


1
उस एक के लिए धन्यवाद। मुझे विश्वास नहीं हो रहा है कि उन्होंने इसे एक 'एन्हांसमेंट' के रूप में जोड़ा है। यही web.config के लिए है। अब हम भरोसा नहीं कर सकते हैं कि हम web.config में क्या देखते हैं। प्रतिभाशाली।
Trucker_jim

1
आपने अभी मुझे Visual Studio 2010 के लिए रोलबैक से बचाया!
जुलिएन पी

2
खिचड़ी भाषा का मानना ​​है कि यह # 1 क्वेस्टियो नहीं था / इन सभी एसओ पोस्टों में से उत्तर उन लोगों के लिए जो आईआईएस सेटिंग्स के बारे में बात करते रहते हैं
लॉस्ट

38

VS2013 F4 में आपके प्रोजेक्ट पर गुण विंडो को देखने और बेनामी पहुंच को अक्षम करने और "विंडोज प्रमाणीकरण" को सक्षम करने के लिए

तब यह काम करेगा। और कुछ बदलने की जरूरत नहीं


स्पष्ट रूप से, यह विकल्प तब मौजूद होता है जब आप किसी वेब प्रोजेक्ट को डीबग करना चाहते हैं, लेकिन सर्विस प्रोजेक्ट्स के लिए मौजूद नहीं होता है। ग्र्र्र ...
माइक गिल्डहिल

9

वीएस 2015 इसमें बदलाव करता है। इसने मेरे वेब प्रोजेक्ट में एक .vs फोल्डर जोड़ा और एप्लीकेशनहोस्ट.कॉन्फिग वहां था। मैंने सुझाए गए परिवर्तन किए (विंडो प्रमाणीकरण = सत्य, एनोन = गलत) और यह रिक्त के बजाय एक उपयोगकर्ता नाम देना शुरू कर दिया।


8

C: \ Users [userid] \ Documents \ IISExpress \ config फ़ोल्डर में स्थित ApplicationHost.config फ़ाइल खोलें। इस फ़ाइल के अंदर "अनुमति दें" के लिए गुमनामता और खिड़कियों के निर्माण के ओवरराइडमॉडफ़ॉल्ट को बदलें

 <sectionGroup name="security">
                <section name="access" overrideModeDefault="Deny" />
                <section name="applicationDependencies" overrideModeDefault="Deny" />
                <sectionGroup name="authentication">
                    <section name="anonymousAuthentication" overrideModeDefault="Allow" />
                    <section name="basicAuthentication" overrideModeDefault="Deny" />
                    <section name="clientCertificateMappingAuthentication" overrideModeDefault="Deny" />
                    <section name="digestAuthentication" overrideModeDefault="Deny" />
                    <section name="iisClientCertificateMappingAuthentication" overrideModeDefault="Deny" />
                    <section name="windowsAuthentication" overrideModeDefault="Allow" />
                </sectionGroup>

अगला परिवर्तन लॉकइनेम AnonymousAuthenticationModule और WindowsAuthenticationModule के लिए "झूठा" होने के लिए

  <system.webServer>
            <modules>
                <!--
                <add name="HttpCacheModule" lockItem="true" />
-->
                <add name="DynamicCompressionModule" lockItem="true" />
                <add name="StaticCompressionModule" lockItem="true" />
                <add name="DefaultDocumentModule" lockItem="true" />
                <add name="DirectoryListingModule" lockItem="true" />
                <add name="IsapiFilterModule" lockItem="true" />
                <add name="ProtocolSupportModule" lockItem="true" />
                <add name="HttpRedirectionModule" lockItem="true" />
                <add name="ServerSideIncludeModule" lockItem="true" />
                <add name="StaticFileModule" lockItem="true" />
                <add name="AnonymousAuthenticationModule" lockItem="false" />
                <add name="CertificateMappingAuthenticationModule" lockItem="true" />
                <add name="UrlAuthorizationModule" lockItem="true" />
                <add name="BasicAuthenticationModule" lockItem="true" />
                <add name="WindowsAuthenticationModule" lockItem="false" />

इन परिवर्तनों को करने से मौजूदा वेब कॉन्फिगरेशन सेटिंग्स आईआईएस एक्सप्रेस के लिए एप्लीकेशनहॉस्ट फ़ाइल में मौजूद ओवरराइड करने की अनुमति देगा।


1
ये बदलाव प्लस मेरे लिए एक लॉगऑफ का काम करते हैं। कुछ कैश्ड है, क्योंकि IIS एक्सप्रेस को अधिसूचना आइकन से रोकना और वी.एस. को पुनरारंभ करना काम नहीं करता है। यह त्रुटि वास्तव में कष्टप्रद है, यह हर कुछ महीने या आधे साल में होता है जब एक नया वीएम या डेवलपर पीसी बनाया जाता है। यह हमेशा आधे दिन तक खो जाता है, सेटिंग्स के साथ खिलवाड़ करता है। समस्या यह है कि इन सेटिंग्स को तुरंत ठीक कर देना चाहिए, लेकिन ऐसा नहीं है और इसके आसपास खेलने के बाद अचानक काम करता है, बहुत अजीब है और मुझे यह पसंद नहीं है। एक लॉगऑफ की सिफारिश की जाती है। अगली बार ऐसा होता है कि मैं अलग करने की कोशिश करूँगा, लेकिन यह बहुत कष्टप्रद डिफ़ॉल्ट है।
टोनी वॉल

6

आप अपने वेब प्रोजेक्ट के लिए प्रोजेक्ट संपत्तियों को भी संशोधित कर सकते हैं, बाएं टैब से "वेब" चुन सकते हैं, फिर सर्वर को "लोकल" पर छोड़ सकते हैं। एक नई वर्चुअल निर्देशिका बनाएं और अपनी साइट / ऐप पूल को वांछित रूप से सेटअप करने के लिए IIS प्रबंधक का उपयोग करें।

मैं इस पद्धति को पसंद करता हूं, क्योंकि आपके पास आमतौर पर स्थानीय रूप से परीक्षण करने के लिए एक स्थानीय आईआईएस वी-निर्देशिका (या साइट) होगी। आप किसी भी अन्य साइटों को इस तरह से प्रभावित नहीं करेंगे।

वेब प्रोजेक्ट गुण


1

ऐसा प्रतीत होता है कि सही उत्तर उपयोक्ता 3149240 द्वारा दिया गया है। हालाँकि, जैसा कि नील वॉटसन ने बताया, यहाँ पर applicationhost.config फ़ाइल चल रही है।

परिवर्तन वास्तव में VS प्रॉपर्टी फलक में या किसी भिन्न स्थान पर फ़ाइल के साथ किए जा सकते हैं। Applicationhost.config फ़ाइल के नीचे के पास स्थान तत्वों का एक सेट है। IIS एक्सप्रेस का प्रत्येक ऐप इनमें से एक है। UI में सेटिंग्स को बदलने से फाइल का यह सेक्शन अपडेट हो जाता है। तो, आप या तो UI के माध्यम से सेटिंग्स बदल सकते हैं या इस फ़ाइल को संशोधित कर सकते हैं।

यहां एक उदाहरण है अनाम बंद और Windows पर अनाम स्थिति:

<location path="MyApp">
    <system.webServer>
        <security>
            <authentication>
                <windowsAuthentication enabled="true" />
                <anonymousAuthentication enabled="false" />
            </authentication>
        </security>
    </system.webServer>
</location>

यह वीएस यूआई में इसके बराबर है:

Anonymous Authentication: Disabled
Windows Authentication: Enabled

वर्तमान VS में यह काम नहीं करता है, यह हमेशा कहेगा कि यह तब भी लॉक है जब Applicationhost.config मॉड्यूल को यूजर डॉक्यूमेंट और सॉल्यूशन .vs / config पाथ दोनों में अनलॉक किया गया हो। यह भी सच नहीं है कि यह एकमात्र जगह है, गुण विंडो से सेटिंग्स वास्तव में वीएस वेब परियोजना के एक्सएमएल में संग्रहीत हैं। लेकिन इससे कोई फर्क नहीं पड़ता क्योंकि उन्हें बदलने से भी मदद नहीं मिलती, एप्लिकेशनहोस्ट हमेशा ओवरराइड होता है। उन परिवर्तनों को काम करने के लिए एक लॉगऑफ़ आवश्यक था, बस।
टोनी वॉल

0

F4 हमेशा मुझे इस पैनल में नहीं लाता है। इसके अलावा, यह अक्सर कहा जाता है कि एक तस्वीर एक हजार शब्दों के लायक है।

यहां छवि विवरण दर्ज करें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.