2016-03-23 12 views
5

पर एएसपी.नेट डीबग करने पर डुप्लिकेट अनुरोध जब मैंने एएसपी.नेट वेब एप्लिकेशन (.NET 4.6.1) को डीबग करते समय एक अजीब व्यवहार देखा। जब भी कोई HTTP त्रुटि होती है (उदा। 404 या 403) अनुरोध कुल 3 बार तक डुप्लीकेट हो जाता है।आईआईएस एक्सप्रेस

मैंने फिडलर का उपयोग करके इस एकवचन मुद्दे का परीक्षण किया है, और इंटेलिट्रेस प्रभावी रूप से मुझे तीन समान अनुरोध दिखाता है (भले ही मैं केवल एक ही अनुरोध भेजूं)।

Fiddler Intellitrace

मैं इस मुद्दे के प्रभाव को देख सकते हैं, क्योंकि पाइप लाइन में किसी भी Owin मिडलवेयर तीन बार अनुरोध किया गया है। इस तरह का एक साधारण मिडलवेयर:

app.Use(async (c, n) => 
{ 
    Debug.WriteLine("HIT!"); 
    await n.Invoke(); 
}); 

लगातार तीन "एचआईटी!" प्रिंट करेगा कंसोल में।

यह तब होता है जब अनुरोध एक त्रुटि उत्पन्न करता है, और यदि अनुरोध मिडलवेयर द्वारा प्रबंधित किया जाता है (उदाहरण के लिए यदि मिडलवेयर 2XX स्थिति कोड के साथ प्रतिक्रिया करता है)।

क्या चल रहा है?

मैं Win10 पर वीएस2015 और आईआईएस एक्सप्रेस 10 चला रहा हूं।

[संपादित करें] यह मेरे Web.config कॉन्फ़िगरेशन से संबंधित हो सकता है? मैं इससे एक अंश जोड़ रहा हूँ।

<system.web> 
    <compilation debug="true" targetFramework="4.6.1" /> 
    <httpRuntime targetFramework="4.6.1" enableVersionHeader="false" /> 
</system.web> 
<system.webServer> 
    <httpProtocol> 
     <customHeaders> 
      <clear /> 
     </customHeaders> 
     <redirectHeaders> 
      <clear /> 
     </redirectHeaders> 
    </httpProtocol> 
    <security> 
     <requestFiltering removeServerHeader="true" /> 
    </security> 
    <handlers> 
     <remove name="ExtensionlessUrlHandler-Integrated-4.0" /> 
     <remove name="OPTIONSVerbHandler" /> 
     <remove name="TRACEVerbHandler" /> 
     <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> 
    </handlers> 
    <modules runAllManagedModulesForAllRequests="true" /> 
</system.webServer> 
+0

हमें एक कोड उत्पन्न करने वाला कोड दिखाएं। यह आपका कोड नहीं होना चाहिए; इसे सिर्फ समस्या को पुन: उत्पन्न करने की आवश्यकता है। –

+0

त्रुटि उत्पन्न करने वाला कोई कोड नहीं है। उदाहरण में मैंने 'https: // localhost: 44300' का अनुरोध किया, और आईआईएस सीधे 403 स्टेटस कोड देता है। यह वही है यदि मैं एक अस्तित्व के अंतराल (उदाहरण के लिए 'लोकहोस्ट: 44300/कुछ नहीं है') का अनुरोध करता हूं, और आईआईएस 404 देता है। –

+0

यह भी ध्यान दें कि इस समय ओविन पाइपलाइन में कुछ और नहीं है, केवल मिडलवेयर उदाहरण में दिखाया गया है। –

उत्तर

2

यह समस्या आईआईएस एक्सप्रेस में अनचाहे अनुरोध को प्रबंधित करने की कोशिश कर रहे कई हैंडलर के कारण हुई थी। मैंने इसे Web.config में हटाकर हल किया:

<system.webServer> 
    <handlers> 
     <remove name="ExtensionlessUrlHandler-Integrated-4.0" /> 
     <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" /> 
     <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" /> 
     <remove name="ExtensionlessUrl-Integrated-4.0" /> 
     <remove name="ExtensionlessUrl-ISAPI-4.0_32bit" /> 
    </handlers> 
</system.webServer> 
संबंधित मुद्दे