IIS7 - लॉक उल्लंघन त्रुटि, HTTP हैंडलर, मॉड्यूल और <स्पष्ट /> तत्व


18

मेरे पास एक ASP.NET साइट है जो HTTP हैंडलर के अपने सेट का उपयोग करती है और किसी भी मॉड्यूल की आवश्यकता नहीं है।

इसलिए, IIS6 में, मुझे बस इतना करना था कि यह मेरे web.config में है:

<httpModules>
    <clear />
</httpModules>

हालाँकि, अगर मैं system.webServerIIS7 के लिए क्षेत्र में ऐसा ही करने की कोशिश करता हूं, तो साइट को देखने की कोशिश करने पर मुझे 500 त्रुटि मिलती है, और IIS प्रबंधक में जब मैं हैंडलर मैपिंग को देखने की कोशिश करता हूं, तो मुझे संदेश के साथ एक पॉपअप बॉक्स मिलता है:

इस ऑपरेशन को करते समय एक त्रुटि हुई

विवरण:

फ़ाइल का नाम:

\ \ सी: \ ब्लॉग \ TheWebSiteGoesHere \ web.config

लाइन नंबर: 39

त्रुटि: ताला उल्लंघन

लाइन 39 वह जगह है जहाँ <clear />तत्व है।

कुछ googling ने मुझे इस कमांड को चलाने के लिए एक समाधान के लिए प्रेरित किया:

%windir%\system32\inetsrv\appcmd.exe unlock config -section:system.webServer/modules

... लेकिन इससे समस्या हल नहीं हुई।

जवाबों:


11

वह डिजाइन द्वारा है। System.webServer का अनुभाग अनिवार्य रूप से IIS को ही परिभाषित करता है। यदि आप, आप कुछ भी नहीं छोड़ा जाएगा। ApplicationHost.config में, आपके पास कुछ इस तरह होना चाहिए:

        <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="StaticFileModule" lockItem="true" />
            ...

लॉकिटेम गुण देखें। क्योंकि 1 या अधिक लॉक आइटम हैं, एक लॉक उल्लंघन फेंक देंगे।

तो, आपको या तो केवल उन वस्तुओं को विशेष रूप से हटाने की आवश्यकता है जो आप web.config से नहीं चाहते हैं, या यदि आपको वास्तव में उन सभी को साफ़ करने और अपने स्वयं को वापस जोड़ने की आवश्यकता है, तो ApplicationHost.config में lockItem = "true" को हटा दें उन तत्वों में से प्रत्येक, और उनमें से पर्याप्त को वापस जोड़ना सुनिश्चित करें ताकि आपका वेब सर्वर वास्तव में काम करे।

संपादित करें

(उनके अनुरोध के अनुसार डैनियल से आगे की जानकारी प्राप्त की।) (स्कॉट)

स्कॉट ने जो कहा उसके आधार पर मैंने यह किया है:

% Windir% \ system32 \ inetsrv \ config में ApplicationHost.config खोला गया। ध्यान दें कि 64 बिट विंडोज सर्वर 2008 में, आपको 64 बिट संपादक के साथ फाइल को संपादित करने की आवश्यकता होगी (देशी नोटपैड करेगा, लेकिन नोटपैड ++ फ़ाइल को खोजने में सक्षम नहीं होगा)। इसके बारे में अधिक जानकारी के लिए यहां देखें।

तत्व में, लॉक मॉड्यूल को सभी मॉड्यूल पर असत्य में बदलें।

मेरे वेब अनुप्रयोग के web.config फ़ाइल में, तब निम्न कार्य करने में सक्षम था:

<system.webServer>
   <modules>
      <clear />
   </modules>
</system.webServer>

बेशक, जैसा कि स्कॉट बताते हैं, इसका मतलब है कि कोई वेब सर्वर नहीं बचा है, इसलिए यहां मॉड्यूल का न्यूनतम सेट है जिसे मुझे अपना सामान फिर से चलाने के लिए आवश्यक है (वाईएमएमवी):

<add name="HttpRedirectionModule" lockItem="false" />

<add name="StaticFileModule" lockItem="false" />

<add name="CustomLoggingModule" lockItem="false" />

<add name="CustomErrorModule" lockItem="false" />

<add name="IsapiModule" lockItem="false" />

<add name="AnonymousAuthenticationModule" lockItem="false" />

इसके अलावा, किसी के लिए भी, यहाँ क्यों मैं यह कर रहा हूँ के रूप में backstory है


2

स्कॉट, क्या आप इसे अपने जवाब में जोड़ सकते हैं?

स्कॉट ने जो कहा उसके आधार पर मैंने यह किया है:

  1. में खोला applicationHost.configगया %windir%\system32\inetsrv\config। ध्यान दें कि 64 बिट विंडोज सर्वर 2008 में, आपको 64 बिट संपादक के साथ फाइल को संपादित करने की आवश्यकता होगी (देशी नोटपैड करेगा, लेकिन नोटपैड ++ फ़ाइल को खोजने में सक्षम नहीं होगा)। इसके बारे में अधिक जानकारी के लिए यहां देखें ।

  2. में <system.webServer>तत्व को बदलने lockItemके लिए सभी मॉड्यूल पर विशेषता false

  3. मेरे वेब अनुप्रयोग के web.config फ़ाइल में, तब निम्न कार्य करने में सक्षम था:

    <system.webServer>
       <modules>
          <clear />
       </modules>
    </system.webServer>
    
  4. बेशक, जैसा कि स्कॉट बताते हैं, इसका मतलब है कि कोई वेब सर्वर नहीं बचा है, इसलिए यहां मॉड्यूल का न्यूनतम सेट है जिसे मुझे अपना सामान फिर से चलाने के लिए आवश्यक है (वाईएमएमवी):

    <add name="HttpRedirectionModule" lockItem="false" />

    <add name="StaticFileModule" lockItem="false" />

    <add name="CustomLoggingModule" lockItem="false" />

    <add name="CustomErrorModule" lockItem="false" />

    <add name="IsapiModule" lockItem="false" />

    <add name="AnonymousAuthenticationModule" lockItem="false" />

इसके अलावा, किसी के लिए भी, यहाँ क्यों मैं यह कर रहा हूँ के रूप में backstory है


उस अंतिम बिट पर फ़ॉर्मेटिंग के बारे में क्षमा करें ... किसी कारण से इसे सामान्य "कोड" प्रारूप में प्रदर्शित नहीं किया जाएगा।
डैनियल शेफ़र

ज़रूर। बस जोड़ दिया।
स्कॉट फोर्सिथ - एमवीपी

2

मुझे उम्मीद है कि मदद करने में बहुत देर नहीं हुई है।

मुझे आज यह समस्या मिली और ApplicationHost.Config XML नोड के बाद समस्या संपादन डी को ठीक करें:

httpErrors lockAttributes = "allowAbsolutePathsWhenDelegated, defaulthath"

उस ", डिफ़ॉल्टपाठ" को हटा दें और आपको IIS (iisreset) को पुनरारंभ करें।

मुझे आशा है कि इसके सहायक।


0

आपको मूल web.config (बैकअप बनाने) को हटाने की कोशिश करें और IIS के माध्यम से परिवर्तन करने के बाद (यह नया web.config बनाएगा) अन्य परिवर्तनों को पुनर्स्थापित करें। यदि आप कॉन्फ़िगर कर रहे हैं, तो HTTP ERRORs इस http://paymentgatewayingrationhelp.com/Tech-Help/HTTP-Errors-and-webconfig-Lock-Violation-1140 का अनुसरण करते हैं।

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