[iis-7] आईआईएस एक्सप्रेस पर नहीं, आईआईएस 7 पर वेबएपी का {"संदेश": "एक त्रुटि आई है"}



Answers

मूल रूप से:

यदि CustomErrors आपके लिए इसे हल नहीं करता है तो इसके बजाय IncludeErrorDetailPolicy उपयोग करें (उदाहरण के लिए यदि आप ASP.NET स्टैक हैं> 2012):

GlobalConfiguration.Configuration.IncludeErrorDetailPolicy 
= IncludeErrorDetailPolicy.Always;

नोट: सावधानी बरतें विस्तृत त्रुटि जानकारी 'हैकर्स' को संवेदनशील जानकारी प्रकट कर सकती है। नीचे दिए गए इस जवाब पर साइमन की टिप्पणी देखें।

टीएल; डीआर संस्करण

मेरे लिए CustomErrors वास्तव में मदद नहीं की थी। यह पहले से ही Off गया था, लेकिन मुझे अभी भी केवल an error has occurred मिली है संदेश मिला है। मुझे लगता है कि स्वीकृत उत्तर 3 साल पहले से है जो आजकल वेब शब्द में एक लंबा समय है। मैं वेब एपीआई 2 और एएसपी.नेट 5 (एमवीसी 5) का उपयोग कर रहा हूं और माइक्रोसॉफ्ट आईआईएस-केवल रणनीति से दूर चला गया है, जबकि CustomErrors पुरानी स्कूल आईआईएस है;)।

वैसे भी, मुझे उत्पादन पर कोई मुद्दा था कि मेरे पास स्थानीय रूप से नहीं था। और फिर पाया कि मैं क्रोम के नेटवर्क टैब में त्रुटियों को नहीं देख सका जैसे मैं अपनी देव मशीन पर कर सकता था। अंत में मैंने अपने उत्पादन सर्वर पर क्रोम स्थापित करके और फिर सर्वर पर ऐप पर ब्राउज़ करके इसे हल करने में कामयाब रहे (उदाहरण के लिए 'लोकलहोस्ट' पर)। फिर स्टैक निशान और सभी के साथ और अधिक विस्तृत त्रुटियां दिखाई दीं।

इसके बाद मुझे जिमी बोगर्ड से यह आलेख मिला (नोट: जिमी श्रीमान ऑटोमैपर है! )। मजाकिया बात यह है कि उनका लेख 2012 से भी है, लेकिन इसमें वह पहले से ही बताता है कि CustomErrors अब इसके लिए मदद नहीं करते हैं, लेकिन आप वैश्विक वेबएपीआई कॉन्फ़िगरेशन में एक अलग IncludeErrorDetailPolicy सेट करके 'त्रुटि विस्तार' बदल सकते हैं (उदाहरण के लिए WebApiConfig.cs ):

GlobalConfiguration.Configuration.IncludeErrorDetailPolicy 
= IncludeErrorDetailPolicy.Always;

सौभाग्य से वह यह भी बताता है कि इसे कैसे सेट अप करें वेबपी (2) अपनी CustomErrors सेटिंग्स को CustomErrors । यह एक बहुत समझदार दृष्टिकोण है, और यह आपको 2012 में वापस जाने की अनुमति देता है: पी।

नोट: डिफ़ॉल्ट मान 'लोकलऑनली' है, जो बताता है कि मैं इस पोस्ट को ढूंढने से पहले, जिस तरह से मैंने वर्णन किया था, समस्या को हल करने में सक्षम था। लेकिन मैं समझता हूं कि हर कोई सिर्फ उत्पादन के लिए रिमोट नहीं कर सकता है और एक ब्राउज़र शुरू कर सकता है (मुझे पता है कि मैं तब तक नहीं कर सकता जब तक कि मैंने फ्रीलांस और देवोप्स जाने का फैसला नहीं किया)।

Question

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

यह निर्णय लेने के बाद कि कम से कम इष्टतम समाधान था, हमने .NET 4.5 को स्थापित करने के बाद वेबएपी को दूरस्थ सर्वर पर डालने का निर्णय लिया। जब मैं फिडलर का उपयोग करता हूं और अपनी स्थानीय मशीन पर नियंत्रक को पोस्ट भेजता हूं तो यह सही प्रतिक्रिया देता है, फिर भी जब मैं डोमेन को आईआईएस 7 चलाने वाले वेबसर्वर में बदलता हूं तो एक ही पोस्ट एक गुप्त हो जाता है

{"संदेश": "एक त्रुटि आई है"}

संदेश। किसी को भी पता है कि क्या हो सकता है?




अन्य उत्तरों में से कोई भी मेरे लिए काम नहीं करता है।

यह किया: (Startup.cs में)

public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        var config = new HttpConfiguration();

        WebApiConfig.Register(config);

        // Here: 
        config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;
    }
}

(या आप इसे WebApiConfig.cs में डाल सकते हैं):

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        // Web API routes
        config.MapHttpAttributeRoutes();

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{action}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

        // Here: 
        config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;
    }
}



अगर यह किसी की मदद करता है:

मेरे पास एक समान समस्या थी, और निम्नलिखित नेट्स निर्देशों के बाद मैंने जोड़ा:

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

इससे मुझे त्रुटि के बारे में और अधिक जानकारी मिली:

"अपवाद मैसेज": "निर्दिष्ट मेटाडेटा संसाधन लोड करने में असमर्थ।", "अपवाद टाइप": "सिस्टम.डाटा.इन्टिटी.कोर.मैटाडाटाएक्सप्शन", "स्टैकट्रेस": "सिस्टम.डाटा.इन्टिटी.कोर.मैटडाटा.एडएम.मैटाडाटा आर्टिफैक्टलोडर कॉम्पोजिट रिसोर्स .LoadResources (...

यह तब होता है जब मुझे याद आया कि मैंने एडीएमएक्स फ़ाइल को एक अलग स्थान पर ले जाया था और कॉन्फ़िगरेशन में कनेक्शनस्ट्रिंग नोड को बदलना भूल गया था (कनेक्शनस्ट्रिंग नोड को "configSource" का उपयोग करके एक अलग फ़ाइल में रखा गया था, लेकिन यह एक और कहानी है)।




Related