IIS एक बंद अनुभाग के बारे में शिकायत करता है - मैं कैसे पता लगा सकता हूं कि यह कहां बंद है?


54

मेरे पास यह अनुभाग मेरे web.config में है:

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true" />
    <security>
        <authentication>
            <anonymousAuthentication enabled="true" />
            <windowsAuthentication enabled="true" />
        </authentication>
    </security>
</system.webServer>

IIS7 क्रैश और ऑटिफ़िकेशन अनुभाग के बारे में शिकायत करता है:

मॉड्यूल AnonymousAuthenticationModule
अधिसूचना प्रमाणीकरणप्रमाणप्राप्त
हैंडलर StaticFile
त्रुटि कोड 0x80070021
कॉन्फ़िगरेशन त्रुटि यह कॉन्फ़िगरेशन खंड इस पथ पर उपयोग नहीं किया जा सकता है। यह तब होता है जब अनुभाग पैरेंट स्तर पर लॉक होता है। लॉकिंग या तो डिफ़ॉल्ट रूप से होती है (ओवरराइडोडोडेफ़ॉल्ट = "इंकार"), या ओवरराइडमोड = "इंकार" या विरासत के साथ एक स्थान टैग द्वारा स्पष्ट रूप से सेट करें। ऑवरराइड = "झूठा"।

Config Source  
   69:  <authentication>
   70:    <anonymousAuthentication enabled="true" />

तो इसे हल करने का सामान्य तरीका %windir%\system32\inetsrv\config\applicationHost.configअनुभाग में जाना और अनलॉक करना है:

    <sectionGroup name="system.webServer">
        <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="Allow" />
                <section name="clientCertificateMappingAuthentication" overrideModeDefault="Allow" />
                <section name="digestAuthentication" overrideModeDefault="Allow" />
                <section name="iisClientCertificateMappingAuthentication" overrideModeDefault="Allow" />
                <section name="windowsAuthentication" overrideModeDefault="Allow" />
            </sectionGroup>

(वैकल्पिक रूप से, appcmd unlock config)।

अजीब बात है: मैंने ऐसा किया है और यह अभी भी शिकायत करता है।

मैंने लोकेशन की तलाश की (एमवीसी मेरी वेबसाइट का नाम है जो उन सभी साइटों की जड़ है जो मैं उपयोग कर रहा हूं):

<location path="MVC" overrideMode="Allow">
    <system.webServer overrideMode="Allow">
        <security overrideMode="Allow">
            <authentication overrideMode="Allow">
                <windowsAuthentication enabled="true" />
                <anonymousAuthentication enabled="true" />
            </authentication>
        </security>
    </system.webServer>
</location>

फिर भी यह खिलता है। मैं हैरान हूं कि ऐसा क्यों होता है। मैं इसे web.config से नहीं हटा सकता, मैं मूल समस्या खोजना चाहता हूं।

क्या आईआईएस से विशिष्ट जानकारी प्राप्त करने का कोई तरीका है जो अंततः मुझे इनकार कर रहा है?

संपादित करें: मैं बहुत रूट (मेरी मशीन) पर जाकर IIS7 प्रबंधन कंसोल का उपयोग करके इसे ठीक करने में सक्षम था और "कॉन्फ़िगरेशन संपादित करें" पर क्लिक करके और वहां अनुभाग को अनलॉक कर रहा था। फिर भी मैं जानना चाहूंगा कि क्या कोई बेहतर तरीका है क्योंकि मैं उस फाइल को नहीं खोज सकता जो वास्तव में संशोधित करती है।


स्मृति से, आमतौर पर 500.19 में एक खंड होता है जो आपको बताता है कि किस स्थान पर कौन सी फ़ाइल है, नीचे (मुझे लगता है) पर
TristanK

1
यह बहुत अच्छी तरह से एसओ पर
16

जवाबों:


78

मेरे लिए समस्या को ठीक करने वाले इन चरणों को हल किया:

  1. IIS प्रबंधक खोलें
  2. बाईं ओर ट्री में सर्वर नाम पर क्लिक करें
  3. दाहिने हाथ का फलक, प्रबंधन अनुभाग, डबल क्लिक करें विन्यास संपादक
  4. शीर्ष पर, अनुभाग चुनें system.webServer/security/authentication/anonymousAuthentication
  5. राइट हैंड पेन, सेक्शन अनलॉक करें पर क्लिक करें
  6. शीर्ष पर, अनुभाग चुनें system.webServer/security/authentication/windowsAuthentication
  7. राइट हैंड पेन, सेक्शन अनलॉक करें पर क्लिक करें

1
क्या यह एक PowerShell के बराबर है? मैं इसे स्क्रिप्ट करने में सक्षम होना चाहूंगा।
पीट स्टेंसोन्स

यदि आप एक पाते हैं, तो इसे पोस्ट करने के लिए स्वतंत्र महसूस करें :)
tomfanning

मैं करूंगा, मैं उम्मीद कर रहा था कि कोई और पहले से ही जानता था कि कैसे।
पीट स्टेंसोन्स

1
@ PeteStensønes में यह है! >%windir%\system32\inetsrv\appcmd.exe unlock config -section:system.webServer/security/authentication/windowsAuthentication
जोकर

14

इसने विंडोज सर्वर 2012, आईआईएस 8.5 पर मेरी त्रुटि को हल किया। अन्य संस्करणों के लिए भी काम करना चाहिए।

  1. सर्वर मैनेजर पर जाएं , रोल्स और फीचर्स जोड़ें पर क्लिक करें
  2. भूमिकाओं में अनुभाग चुनें: वेब सर्वर
  3. सुरक्षा सब-सेक्शन के तहत सब कुछ चुनें (मैं पाचन को छोड़ देता हूं, आईपी प्रतिबंध और URL प्राधिकरण क्योंकि हम उनका उपयोग नहीं करते हैं)
  4. अनुप्रयोग विकास के तहत .NET Extensibility 4.5और ASP>NET 4.5ISAPI दोनों प्रविष्टियों का चयन करें
  5. में विशेषताएं अनुभाग चुनें: NET 3.5, .NET 4.5,ASP.NET 4.5
  6. में वेब सर्वर अनुभाग चुनें: Web Server (all), Management Tools (IIS Management Console and Management Service),Windows

5

कॉन्फ़िगरेशन लॉकिंग में हो सकता है:

  1. Applicationhost.config (config string: MACHINE / WEBROOT / APPHOST)

  2. साइट Web.config फ़ाइल (MACHINE / WEBROOT / APPHOST / वेब साइट का नाम)

  3. कोई भी ऐप web.config फ़ाइल जो (MACHINE / WEBROOT / APPHOST / साइट का नाम / ऐप का नाम)

एक खंड (अनुभाग: IIS कॉन्फ़िगरेशन अनुभाग, उदा <asp>) को लॉक करने से आप उन सेटिंग्स को अपने से कम पदानुक्रम में किसी भी निम्न स्तर पर कॉन्फ़िगर करने की क्षमता से वंचित कर सकते हैं।

GUI के फ़ीचर डेलिगेशन चीज़ों का उपयोग करना गलत नहीं है, और AppCMD जो भी करता है, उसके तहत एक बहुत ही समान काम करता है, कवर के तहत ओवरराइडमोड को एक <location>टैग में किसी भी स्तर पर किसी भी अनुभाग के लिए सेट करता है जिस पर आप केंद्रित हैं।

APPCMD का उपयोग फ़ाइलों को अनलॉक करने के लिए किया जा सकता है, लेकिन इस पर ध्यान दें कि यह कहाँ कह रही है कि यह कर रही है - यह इस बारे में GUI जितना स्मार्ट नहीं है।

जोड़ा जा रहा है -commit:apphostआपके के अंत तक APPCMD UNLOCKआदेश लक्ष्य ApplicationHost.config, जो आईआईएस ऑपरेशन के लिए कुंजी फ़ाइल (पूर्व संस्करणों से मेटाबेस की जगह; भंडार सभी केंद्रीकृत सेटिंग्स लेकिन web.config फ़ाइलों में ओवरराइड की अनुमति देता है (यदि आप करते हैं))।

एप्लिकेशन -होस्ट के बिना: APPCMD एक वेब.config फ़ाइल के लिए निकटतम तार्किक स्थान को लक्षित करेगा - चाहे वह साइट या ऐप स्तर पर हो, और यह इंगित करें कि उपरोक्त सेट की तरह कॉन्फ़िगरेशन स्ट्रिंग का उपयोग करके सेटिंग बदल गई है। (एक तरफ: आप अभी भी उप वेब साइटों में सिर्फ सेटिंग्स को लक्षित कर सकते हैं, लेकिन apphost के लिए प्रतिबद्ध हैं - इसे पूरा करने के लिए स्थान टैग का उपयोग करता है)

तो अगर यह कहा गया (मेमोरी पैराप्रेज़) "MACHINE / WEBROOT / APPHOST के लिए प्रतिबद्ध", तो इसका मतलब IIS पदानुक्रम का शीर्ष स्तर होगा।

यदि यह "MACHINE / WEBROOT / APPHOST / Dodgy वेब साइट के लिए प्रतिबद्ध" है, तो इसका मतलब है कि यह Dodgy वेब साइट के पीछे भौतिक पथ को देखता है, और उस स्थान पर एक web.config फ़ाइल (या इसे अपडेट किया गया) लिखा है।


3

यदि आप IISExpress और Visual Studio 2015 का उपयोग कर रहे हैं, तो इसमें applicationHost.configसंग्रहीत है $(solutionDir).vs\config\applicationhost.config(Nime Cloud के उत्तर के लिए धन्यवाद )।

overrideModeDefault="Allow"जहां भी उचित हो, बस बदल दें।

<sectionGroup name="security">
    <section name="access" overrideModeDefault="Deny" />
    <section name="applicationDependencies" overrideModeDefault="Deny" />
    <sectionGroup name="authentication">
        <section name="anonymousAuthentication" overrideModeDefault="Allow" />
etc...

1

अपने एपिटॉन पूल में कोशिश करें, 32-बिट एप्लिकेशन IIS प्रबंधक का समर्थन करने में अक्षम करें -> एप्लिकेशन पूल -> चयन करें [आपका AppPool] -> उन्नत सेटिंग्स -> 32-बिट एप्लिकेशन सक्षम करें - इसे 'गलत' में बदलें


-2

IIS पर एक नज़र डालें - इस कॉन्फ़िगरेशन अनुभाग का उपयोग इस पथ पर नहीं किया जा सकता है (कॉन्फ़िगरेशन लॉकिंग?)

स्वीकृत उत्तर ने विंडोज 10 पर मेरे लिए पूरी तरह से काम किया, यह निम्नलिखित करने का निर्देश देता है:

  • "स्टार्ट बटन" पर क्लिक करें
  • खोज बॉक्स में, "चालू या बंद विंडो सुविधाएँ" दर्ज करें
  • विंडो में, क्लिक करें: "इंटरनेट सूचना सेवा"
  • क्लिक करें: "वर्ल्ड वाइड वेब सर्विसेज"
  • क्लिक करें: "अनुप्रयोग विकास सुविधाएँ"
  • सुविधाओं को जांचें (सक्षम करें)। मैंने सभी की जांच की लेकिन सी.जी.आई.
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.