c# - हैंडलर "ExtensionlessUrlHandler-Integrated-4.0" में मॉड्यूल सूची में एक खराब मॉड्यूल "प्रबंधित पाइपलाइन हैंडलर" है




asp.net iis (14)

आप IIS में System.eb.DefaultHttpHandler में "ExtensionlessUrlHandler-Integrated-4.0" प्रकार को बदलकर इसे ठीक कर सकते हैं।

ईमानदार होने के लिए, मैंने आईआईएस पर एक गंदे चाल को चालू करने की कोशिश की है और जब मैंने सोचा कि मैं इससे दूर जा रहा हूं, तो मुझे एहसास हुआ कि मेरा कामकाज काम नहीं करता है। यहां मैंने जो करने की कोशिश की है:

1) मेरे पास एएसपी.नेट एप्लीकेशन है जिसमें प्रीलोडर क्लास है जो आईप्रोसेस्टहोस्टलोड क्लाइंट को विरासत में लेता है और प्रीलोड विधि कार्यान्वयन में सभी भारी प्रारंभिकता करता है (एप्लिकेशन जटिल है और यह एक विशाल प्रणाली का हिस्सा है, इसलिए इसे सभी आवश्यकतानुसार कनेक्शन स्थापित करने के लिए लगभग 2 मिनट की आवश्यकता है सेवाओं और कुछ एकता पंजीकरण पूर्व-तत्काल)।

2) मेरे पास बहुत सारे काम हैं जिन्हें एप्लिकेशन शट डाउन (सदस्यता रद्द करना, डिस्कनेक्ट करना, निपटान करना, ...) पर किया जाना चाहिए, और मुझे लगता है कि यह करने के लिए सबसे अच्छी जगह है * Application_End * विधि Global.asax में स्थित है।

3) जब मेरे पास उपयोगकर्ता गतिविधि होती है तो सबकुछ ठीक काम करता है (उपरोक्त वेब एप्लिकेशन वाले एप्लिकेशन पूल के बाद पहला अनुरोध शुरू हो जाएगा * एप्लिकेशन_स्टार्ट * को कॉल किया जाएगा और बाद में * एप्लिकेशन पूल एंड एप्लिकेशन रीसायकल पर एप्लिकेशन_एंड * कहा जाता है), लेकिन समस्याएं तब होता है जब कोई उपयोगकर्ता गतिविधि नहीं होती है और एप्लिकेशन 48 घंटे (कॉन्फ़िगर की आवश्यकता) के लिए सक्रिय होने के बाद स्वयं को पुनरारंभ करने का प्रयास करता है। चूंकि कोई अनुरोध नहीं था, इसलिए आवेदन आधिकारिक तौर पर शुरू नहीं हुआ था। Ergo, इसे तब से बंद नहीं किया जा सकता है जब से * Application_End * नहीं कहा जाएगा।

4) अब गन्दा हिस्सा आता है ... मैंने प्रीलोड विधि के अंत में कोड से जीईटी अनुरोध करने का प्रयास किया है, और यह काम करता है। लेकिन यह समाधान मेरे लिए बुरा लग रहा था, भले ही यह काम करता था। इसलिए, मैंने बहुत सी चीजों की कोशिश की है, और आखिरी चीज मैंने कोशिश की थी:

SimpleWorkerRequest swr = new SimpleWorkerRequest(string.Empty, string.Empty, tw);
HttpRuntime.ProcessRequest(swr);

... और उसने इसका उद्देश्य किया है। * Application_Start * को कॉल किया गया था, (मैंने प्रतिक्रिया की जांच की है, इसमें लॉगिन पृष्ठ था जिसमें प्रारंभिक अनुरोध में प्रदर्शित किया जाना था) और एप्लिकेशन पूल शट डाउन एप्लिकेशन * एप्लिकेशन_एंड * में आवश्यक काम करके शानदार ढंग से समाप्त हुआ।

परंतु

आवेदन शुरू होने के बाद (प्रीलोड और शुरू किया गया) इस तरह से, यह तब हुआ जब मैं वेब ब्राउज़र के माध्यम से एप्लिकेशन तक पहुंचना चाहता था:

HTTP त्रुटि 500.21 - आंतरिक सर्वर त्रुटि हैंडलर "ExtensionlessUrlHandler-Integrated-4.0" में मॉड्यूल सूची में एक खराब मॉड्यूल "प्रबंधित पाइपलाइन हैंडलर" है

मैं इसे समझने में असमर्थ हूं। क्या कोई मुझे बता सकता है कि ऐसा क्यों होता है और इसे कैसे ठीक किया जाए?

अगर मुझे यह पता नहीं चलता है, तो मैं पहले समाधान पर वापस जाऊंगा (कोड से अनुरोध प्राप्त कर रहा हूं) लेकिन यह समस्या मुझे बग करेगी क्योंकि मुझे यह भी नहीं पता कि क्या गलत है।


इन आदेशों में से एक चलाएं:

32 बिट विंडोज ओएस के लिए:

c:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i

64 बिट विंडोज ओएस के लिए:

c:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -I

इसे अपनी पोस्ट बनाना क्योंकि यह मुझे घंटों तक जा रहा था।

मैंने इस समस्या के बारे में यहां और कहीं और एक दर्जन समान पोस्ट देखी और aspnet_regiis फिक्स। वे मेरे लिए काम नहीं कर रहे थे, और aspnet_regiis अजीब अभिनय कर रहा था, सिर्फ लिस्टिंग विकल्प इत्यादि।

जैसा कि ऊपर बताए गए उपयोगकर्ता रयान-एंडरसन के रूप में, आप .exe दर्ज नहीं कर सकते हैं

सर्वर पर आईआईएस के बाहर की चीजों के साथ उन लोगों के लिए कम आरामदायक, यहां आप सरल चरणों में क्या करते हैं।

  1. इस पथ के समान फ़ोल्डर में aspnet_regiis खोजें। सी: \ Windows \ Microsoft.NET \ फ्रेमवर्क \ v4.0.30319 \

  2. स्टार्ट मेनू में कमांड प्रॉम्प्ट पर राइट-क्लिक करें या कहीं भी और इसे व्यवस्थापक के रूप में चलाने के लिए कहें। विंडोज़ "रन" सुविधा का उपयोग करना सिर्फ काम नहीं करेगा, या मेरे लिए नहीं होगा।

  3. Aspnet_regiis निष्पादन योग्य पर वापस जाएं। इसे कमांड प्रॉम्प्ट में दायाँ खींचें या पते को कमांड प्रॉम्प्ट में कॉपी-पेस्ट करें।

  4. निकालें, अगर यह है, तो अंत में .exe। यह महत्वपूर्ण है। अंत में -i (अंतरिक्ष शून्य आंख) जोड़ें। दर्ज।

यदि आपने इसे सही तरीके से किया है, तो आप देखेंगे कि यह एएसपीनेट स्थापित करना शुरू कर देता है, और फिर आपको यह बताता है कि यह सफल हुआ है।


एएसपी.NET को aspnet_regiis -i साथ फिर से पंजीकृत करने का प्रयास करें। यह मेरे लिए काम किया।

.NET 4 के लिए संभावित पथ (उन्नत कमांड प्रॉम्प्ट से):

c:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i

http://forums.iis.net/p/1190643/2026401.aspx


मुझे पता है कि यह एक बूढ़ी है, लेकिन सोचा कि मैं कुछ मूल्य जोड़ सकता हूं। हम में से उन लोगों के लिए जो डोमेन के बाहर सर्वर कोर चला रहे हैं (डोमेन सदस्य केवल सर्वर प्रबंधक को सुविधाओं / भूमिकाओं को जोड़ने / हटाने के लिए दूरस्थ रूप से चला सकते हैं), आपको कमांड लाइनों का सहारा लेना होगा।

पावरहेल उपयोगकर्ता "इंस्टॉल-विंडोज फीचर वेब-एएसपी-नेट 45" टाइप कर सकते हैं

यह सर्वर प्रबंधक का उपयोग करने के बराबर होना चाहिए।


मुझे यह समस्या थी और पाया कि निम्न फ़ोल्डर को हटाने में गैर-एक्सप्रेस संस्करण के साथ भी मदद मिली। एक्सप्रेस:

C:\Users\<user>\Documents\IISExpress


मेरे लिए, मेरे सर्वर से WebDAV को हटाने से एप्लिकेशन को PUT या DELETE का उपयोग करते समय 503 Service Unavailable त्रुटि संदेश वापस करने का कारण बन गया, इसलिए मैंने इसे फिर से इंस्टॉल किया। मैंने .NET Framework 4.5 को पूरी तरह से हटाने का प्रयास किया और इसे पुनः स्थापित करने का सुझाव दिया और सुझाए गए अनुसार पुनः पंजीकरण करने का भी प्रयास किया लेकिन इसका कोई फायदा नहीं हुआ।

मैं व्यक्तिगत एप्लिकेशन पूल के लिए WebDAV को अक्षम करके इसे ठीक करने में सक्षम था, इसने PUT या DELETE का उपयोग करते समय 'खराब मॉड्यूल' त्रुटि को रोक दिया।

व्यक्तिगत ऐप पूल के लिए WebDAV अक्षम करें:

  1. प्रभावित एप्लिकेशन पूल पर क्लिक करें
  2. सूची में WebDAV Authoring Tools खोजें
  3. इसे खोलने के लिए क्लिक करें
  4. ऊपर दाईं ओर Disable WebDAV करें पर क्लिक Disable WebDAV

ता दाआ!

मैंने अभी भी मेरी web.config फ़ाइल में हटाए गए आइटम छोड़े हैं।

 <system.webServer>
    <modules>
      <remove name="WebDAVModule"/>
    </modules>
    <handlers>
      <remove name="WebDAV" />
    </handlers>
 <system.webServer>

यह लिंक है जहां मुझे निर्देश मिले लेकिन यह बहुत स्पष्ट नहीं है।


मैं भी उस समस्या में भाग गया। मेरा एमवीसी 4 ऐप आईआईएस 8.5 के साथ विंडोज सर्वर 2012 आर 2 पर चल रहा है। इनमें से कोई भी पोस्ट समाधान मेरे लिए काम नहीं करता है ... आईआईएस सुविधाओं के माध्यम से लापता ढांचे को स्थापित करने से इसे हल किया जा सकता है लेकिन स्थापना हमेशा विफल रही।

मुझे Web Platform Installer का उपयोग करना पड़ा और निम्न पैकेज स्थापित करना पड़ा:


मैं साझा होस्टिंग सर्वर पर होस्ट किए गए वेब एप्लिकेशन में इस समस्या का सामना कर रहा था। तो स्पष्ट रूप से आईआईएस तक सीधी पहुंच नहीं थी, इसलिए यहां प्रस्तावित कई समाधान लागू नहीं हो सके।

होस्टिंग प्रदाता के नियंत्रण कक्ष पर मैंने आईआईएस और एएसपी.Net के लिए त्रुटि लॉगिंग सक्षम की। और फिर यह पता चला कि त्रुटि वास्तव में एक लापता cshtml में झूठ बोला।


मैंने इस समस्या को हल किया, "विंडोज़ सुविधाओं को चालू या बंद करें" विकल्प एएसपी.NET 4.7 में जोड़ना


यह https://.com/a/13266763/1277458 पूरी तरह से काम करता है। लेकिन अगर आपके पास 64-बिट ऑपरेशन सिस्टम फ्रेमवर्क के बजाय फ्रेमवर्क 64 का उपयोग करता है:

c:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i

यह त्रुटि पिछले हफ्ते से मेरे साथ हो रही है, जो मेरी मशीन पर मौजूद मौजूदा वेबसाइटों को प्रभावित करती है। मुझे यहां कोई भी सुझाव देने की कोई उम्मीद नहीं थी। आखिरकार मैंने आईआईएस से पूरी तरह से वेबडीवी को हटा दिया (विंडोज फीचर्स -> इंटरनेट इनफॉर्मेशन सर्विसेज -> वर्ल्ड वाइड वेब सर्विसेज -> सामान्य HTTP विशेषताएं -> वेबडीवी प्रकाशन)। मैंने अच्छे उपाय के लिए इसके बाद एक आईआईएस रीसेट किया, और मेरी त्रुटि अंततः हल हो गई।

मैं केवल अनुमान लगा सकता हूं कि एक विंडोज अपडेट ने समस्या शुरू की, लेकिन मुझे यकीन नहीं है।


सुनिश्चित करें कि आपने आईआईएस प्रबंधक में v2.0 से v4.0 तक अपना application-site संस्करण सेट किया है:

एप्लिकेशन पूल> आपका एप्लिकेशन> उन्नत सेटिंग्स> .NET Framework संस्करण

उसके बाद, अपना ASP.NET स्थापित करें।

32-बिट ओएस (विंडोज़) के लिए:

सी: \ विंडोज \ माइक्रोसॉफ्ट.NET \ Framework \ v4.0.30319 \ aspnet_regiis.exe -i

64-बिट ओएस (विंडोज़) के लिए:

सी: \ विंडोज \ माइक्रोसॉफ्ट.NET \ Framework64 \ v4.0.30319 \ aspnet_regiis.exe -i

IIS प्रबंधक में अपनी application-site को पुनरारंभ करें और आनंद लें।


विंडोज 10 / विंडोज सर्वर 2016 के लिए निम्न आदेश का उपयोग करें:

dism /online /enable-feature /featurename:IIS-ASPNET45 /all

aspnet_regiis साथ सुझाए गए उत्तर विंडोज 10 (निर्माता अद्यतन और बाद में) या विंडोज सर्वर 2016 पर काम नहीं करते हैं:

सी: \ विंडोज \ माइक्रोसॉफ्ट.NET \ Framework \ v4.0.30319 \ aspnet_regiis.exe -i
माइक्रोसॉफ्ट (आर) एएसपी.नेट रजिस्ट्री संस्करण 4.0.3031 9.0
स्थानीय मशीन पर एएसपी.नेट स्थापित करने और अनइंस्टॉल करने के लिए प्रशासन उपयोगिता।
कॉपीराइट (सी) माइक्रोसॉफ्ट कॉर्पोरेशन। सर्वाधिकार सुरक्षित।
एएसपी.नेट (4.0.3031 9.0) स्थापित करना शुरू करें।
यह विकल्प ऑपरेटिंग सिस्टम के इस संस्करण पर समर्थित नहीं है। व्यवस्थापक को "विंडोज़ सुविधाओं को चालू / बंद करें" संवाद, सर्वर प्रबंधक प्रबंधन उपकरण, या dism.exe कमांड लाइन उपकरण का उपयोग करके IIS8 के साथ ASP.NET 4.5 को स्थापित / अनइंस्टॉल करना चाहिए। अधिक जानकारी के लिए कृपया http://go.microsoft.com/fwlink/?LinkID=216771 देखें।
एएसपी.नेट (4.0.3031 9.0) स्थापित करना समाप्त हुआ।

दिलचस्प बात यह है कि "विंडोज़ विशेषताएं चालू / बंद करें" संवाद ने मुझे .NET और ASP.NET 4.6 को अनचेक करने की अनुमति नहीं दी, और केवल उपरोक्त डीआईएसएम कमांड काम किया। सुनिश्चित नहीं है कि सुविधा नाम सही है, लेकिन यह मेरे लिए काम करता है।





web-applications