c# - पृष्ठ प्रदर्शित नहीं किया जा सकता क्योंकि सर्वर पर एक आंतरिक सर्वर त्रुटि आई है




asp.net asp.net-mvc (5)

मैंने सफलतापूर्वक आईआईएस 7 का उपयोग कर अपनी स्थानीय मशीन पर वेबसाइट स्थापित की है। लेकिन जब मैंने इसे लाइव सर्वर पर तैनात किया है, तो मुझे निम्न त्रुटि मिली है:

"पृष्ठ प्रदर्शित नहीं किया जा सकता क्योंकि एक आंतरिक सर्वर त्रुटि आई है" और कुछ नहीं।

लाइव पर एक ही आईआईएस 7 का उपयोग करना और त्रुटि पेज मॉड्यूल में Detailed errors भी सेट करें, लेकिन फिर भी वही मिल रही है। एक कारण क्या हो सकता है?

धन्यवाद


आप में से उन लोगों के लिए जिन्होंने इस स्टैकओवरफ्लो एंट्री को मारा क्योंकि यह वाक्यांश के लिए उच्च स्थान पर है:

"The page cannot be displayed because an internal server error has occurred."

इस सटीक त्रुटि संदेश के साथ मेरी व्यक्तिगत स्थिति में, मैंने अजगर 2.7 पर विचार किया था कि मैं अपने .NET एपीआई के साथ कुछ पायथन का उपयोग कर सकता हूं। जब मैंने एपीआई या एमवीसी के वेनिला संस्करण को विजुअल स्टूडियो प्रो 2013 से तैनात करने का प्रयास किया तो मुझे उस सटीक त्रुटि संदेश का सामना करना पड़ा। मैं एक एज़ूर क्लाउड वेबएप पर तैनात था।

उम्मीद है कि यह मेरे अनुभव के साथ किसी को भी मदद करता है। जब तक मुझे यह suggestion मिला तब तक मैंने अजगर को बंद करने का भी विचार नहीं किया।


ऐसा लगता है कि यह web.config में इस पंक्ति पर टिप्पणी करने के बाद काम करता है

<compilation debug="true" targetFramework="4.5.2" />

मुझे लगता है कि सबसे अच्छा पहला तरीका यह सुनिश्चित करना है कि विस्तृत वेब संदेशों को अपनी web.config फ़ाइल के माध्यम से चालू करें, जैसे:

<configuration>
    <system.webServer>
        <httpErrors errorMode="Detailed"></httpErrors>
    </system.webServer>
</configuration>

ऐसा करने के बाद, आपको सर्वर से अधिक विस्तृत त्रुटि संदेश प्राप्त करना चाहिए।

मेरे विशेष मामले में, अधिक विस्तृत त्रुटि ने इंगित किया कि web.config फ़ाइल के मेरे <defaultDocument> अनुभाग को उस फ़ोल्डर स्तर पर अनुमति नहीं थी जहां मैंने अपना web.config रखा था। यह कहा गया है "इस कॉन्फ़िगरेशन सेक्शन का उपयोग इस पथ पर नहीं किया जा सकता है। ऐसा तब होता है जब अनुभाग को पैरेंट स्तर पर लॉक किया जाता है। लॉकिंग या तो डिफ़ॉल्ट रूप से (ओवरराइडमोडडिफॉल्ट =" अस्वीकार करें ") है, या ओवरराइड के साथ एक स्थान टैग द्वारा स्पष्ट रूप से सेट करें मोड =" अस्वीकार करें "या विरासत को अनुमति देता है ओवरराइड =" झूठा "।"


मेरे मामले में, httpErrors सेट httpErrors और Web.config की तरह समस्या को पहचानने में मदद नहीं मिली।

इसके बजाए मैंने किया:

  1. त्रुटि के साथ वेबसाइट के लिए "विफल अनुरोध ट्रेसिंग" सक्रिय करें।
  2. HTTP त्रुटियों 350-999 (बस मामले में) के लिए एक ट्रेस कॉन्फ़िगर किया गया, हालांकि मुझे 500 का संदेह था।
  3. फिर से गलत यूआरएल बुलाया।
  4. लॉग फ़ोल्डर में देखा गया ("% SystemDrive% \ inetpub \ logs \ failReqLogFiles" मेरे मामले में)।
  5. इंटरनेट एक्सप्लोरर में एक्सएमएल फाइलों में से एक खोल दिया।

मैंने फिर एक विस्तृत अपवाद जानकारी के साथ एक प्रविष्टि देखी। मेरे मामले में यह था

\? \ C: \ Websites \ example.com \ www \ web.config (5 9 2): 'mimeMap' प्रकार की डुप्लिकेट संग्रह प्रविष्टि को अद्वितीय कुंजी विशेषता 'fileExtension' के साथ '.json' पर सेट नहीं किया जा सकता

अब मैं इसे हल करने और त्रुटि को ठीक करने में सक्षम था। इसके बाद मैंने फिर से "असफल अनुरोध ट्रेसिंग" निष्क्रिय कर दिया।


सर्वर त्रुटि विवरण प्रदर्शित करने के लिए अपने web.config को संशोधित करें:

<system.web>
  <customErrors mode="Off" />
</system.web>

आपको httpErrors अनुभाग का पालन / टिप्पणी करने की भी आवश्यकता हो सकती है

  <system.webServer>
    <httpErrors errorMode="Custom">
      <remove statusCode="404" />
      <error statusCode="404" path="/Error/Error404" responseMode="ExecuteURL" />
      <remove statusCode="500" />
      <error statusCode="500" path="/Error/Error500" responseMode="ExecuteURL" />
      <remove statusCode="403" />
      <error statusCode="403" path="/Error/Error403" responseMode="ExecuteURL" />
    </httpErrors>
  </system.webServer>

मेरे अनुभव से यदि आपके पास सीधे सर्वर त्रुटि है, तो यह असेंबली संस्करण मिलान से हो सकती है।

वेब.कॉन्फिग में घोषित किया गया है और बिन फ़ोल्डर के प्रोजेक्ट में वास्तविक डीडीएल देखें।





internal-server-error