2010-03-29 10 views
5

मैं आईआईएस 6 में एक कस्टम त्रुटि पृष्ठ का उपयोग कर रहा:एएसपी.नेट: एक एएसपीएक्स पेज (कस्टम त्रुटि पृष्ठ) के लिए प्रमाणीकरण अक्षम करना?

<customErrors redirectMode="ResponseRedirect" mode="On" defaultRedirect="Error2.aspx"/> 

मैं कस्टम त्रुटि पेज के लिए प्रमाणीकरण को अक्षम करने के लिए क्योंकि त्रुटि उठाया जा रहा एक प्रमाणीकरण मॉड्यूल से संबंधित है चाहता हूँ और मैं पाने के लिए नहीं करना चाहते हैं एक अनंत लूप और मैं उपयोगकर्ता को एक क्लीन त्रुटि पृष्ठ प्रदर्शित करना चाहता हूं। मैं ऐसा करने के लिए निम्न कॉन्फ़िगरेशन का प्रयास कर रहा हूं।

<location path="Error2.aspx"> 
<system.web> 
    <authentication mode="None"/> 
    <authorization> 
    <allow users="?"/> 
    <allow users="*"/> 
    </authorization> 
</system.web> 
</location> 

मैं लाइन है कि प्रमाणीकरण मोड सेट के लिए एक System.Configuration.ConfigurationErrorsException हो रही है।

आवेदन स्तर से परे अनुमति डीफिनिशन = 'मशीनटॉप्लिकेशन' के रूप में पंजीकृत अनुभाग का उपयोग करने में त्रुटि है। यह त्रुटि आभासी निर्देशिका के कारण आईआईएस में एक अनुप्रयोग के रूप में कॉन्फ़िगर नहीं किया जा सकता है।

मैंने सत्यापित किया है कि एप्लिकेशन के फ़ोल्डर के तहत उपनिर्देशिका में कोई अन्य वेब.कॉन्फिग फ़ाइलें नहीं हैं। एप्लिकेशन फ़ोल्डर को आईआईएस में एक एप्लिकेशन के रूप में कॉन्फ़िगर किया गया है और त्रुटि पृष्ठ एप्लिकेशन की रूट पर है। आईआईएस में त्रुटि पृष्ठ के लिए सेट फ़ाइल अनुमतियों में अज्ञात और विंडोज प्रमाणीकरण शामिल है (मैंने अभी भी अज्ञात कोशिश की है)।

उत्तर

1

मैंने अपना कस्टम त्रुटि रीडायरेक्ट मोड फिर से लिखने के लिए बदल दिया है। ऐसा करके, त्रुटि पृष्ठ के लिए एक अलग अनुरोध जारी नहीं किया गया है, त्रुटि उत्पन्न करने वाले प्रमाणीकरण मॉड्यूल को फिर से निष्पादित नहीं किया गया है, आदि

मैं कल्पना कर सकता हूं कि यह कुछ परिदृश्यों में पर्याप्त नहीं हो सकता है (एमवीसी फ्रेमवर्क शायद ?) लेकिन मेरे उपयोग के मामले में, यह पर्याप्त था।

अभी के लिए, मैं इस कार्यवाही के साथ अपने स्वयं के प्रश्न का उत्तर देने जा रहा हूं, जब तक कि कोई और मूल रूप से वर्णित प्रमाणीकरण को वास्तव में अक्षम करने का कोई तरीका प्रदर्शित नहीं कर सकता।

0

अपनी आईआईएस सेटिंग्स खोलें, और सुनिश्चित करें कि रूट आईआईएस (machine.config) अपमानजनक संपत्ति (या तो system.web.authentication या system.web.authorization) को त्रुटि में संदर्भित लाइन नंबर के आधार पर लिखता है)।

उसके बाद, अपना समाधान साफ ​​करें और पुनर्निर्माण करें। मुझे यह समस्या थी, और इसका मशीन.कॉन्फिग या web.config सेटिंग्स से कोई लेना देना नहीं था। किसी कारण से, एक साफ और पुनर्निर्माण करने से त्रुटि दूर हो गई।

+0

क्षमा करें, कोई भाग्य नहीं। Machine.config में guarantDefinition को MachineToAplication, डिफ़ॉल्ट पर सेट किया गया है। इसका मतलब है कि आवेदन की जड़ पर web.config में मान सेट करना ठीक होना चाहिए, जहां मैं मूल्य निर्धारित कर रहा हूं। –

1

निम्नलिखित link देखें। इसमें ऐसी जानकारी है जो location टैग के संबंध में मदद कर सकती है।

<location path="404.aspx"> 
    <system.web> 
     <authorization> 
      <allow users="*" /> 
     </authorization> 
    </system.web> 
</location> 

आसान दृष्टिकोण अपने सभी त्रुटि फ़ाइलें और पृष्ठों है कि आप हमेशा अपने स्वयं निर्देशिका के लिए सुलभ होना चाहता हूँ के लिए कदम और फिर निर्देशिका कि अप्रमाणित एक्सेस मिल जाती है के लिए एक web.config फ़ाइल जोड़ने के लिए किया जाएगा।

+0

यह इतना आसान नहीं है। एक मॉड्यूल के PostAquireRequestState में त्रुटि फेंक दी गई है। इसके परिणामस्वरूप त्रुटि 2.aspx पर रीडायरेक्ट होता है, लेकिन मॉड्यूल के PostAquireRequestState को फिर से बुलाया जाता है। त्रुटि पृष्ठ लोड करते समय एप्लिकेशन.कॉन्टेक्स्ट। स्किप प्राधिकरण को झूठी पर सेट किया गया है (यहां तक ​​कि उपयोगकर्ताओं को अनुमति दें * *)। चूंकि एक नए पृष्ठ को एक रीडायरेक्ट द्वारा अनुरोध किया जा रहा है, Application.Server.getLastError() कुछ भी नहीं है।कोड जारी है जहां यह पहली जगह में त्रुटि फेंक दिया और इसलिए त्रुटि पृष्ठ प्रदर्शित नहीं होता है। यह जांच कर रहा है कि अनुरोध है कि त्रुटि पृष्ठ काम कर सकता है लेकिन मुझे चेतावनी पर संदेह है। –

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