2012-02-16 10 views
15

मैं एक साधारण webmethod हैIIS7 - जब अनुरोध पैरामीटर के आकार से अधिक एक 404.13 साथ नाकाम रहने Webrequest 30MB

[WebMethod] 
public int myWebMethod(string fileName, Byte[] fileContent) 

बहरहाल, जब भी मैं एक बाइट सरणी जो 30MB से बड़ा है गुजरती हैं, मैं त्रुटि मिलती है:

<configuration> 
    <system.web> 
    <compilation debug="true" targetFramework="4.0"> </compilation> 
    <authentication mode="Windows" /> 
    <httpRuntime useFullyQualifiedRedirectUrl="true" 
       maxRequestLength="102400" requestLengthDiskThreshold="102400" 
    /> 
    <pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID" /> 
    </system.web> 
    <system.webServer> 
    <security> 
     <requestFiltering> 
     <requestLimits maxAllowedContentLength="104857600"/> 
     </requestFiltering> 
    </security> 
    </system.webServer> 
</configuration> 

मैं चारों ओर खोज की है, और वें का सबसे आम कारण:

HTTP Error 404.13 - Not Found The request filtering module is configured to deny a request that exceeds the request content length.

मेरे web.config इस प्रकार है समस्या maxAllowedContentLength संपत्ति डिफ़ॉल्ट रूप से 30 एमबी है। हालांकि, मैंने इसे 0 एमके लिए 100 एमबी, साथ ही maxRequestLength संपत्ति के रूप में सेट किया है।

मुझे कहीं भी समाधान नहीं मिल रहा है जो कि पहले से ऊपर की गई संपत्तियों में से एक को सेट नहीं कर रहा है। क्या मुझे कुछ याद आया है?

+0

यह मेरे साथ भी 7.5 में हो रहा है: मुझे सच में विश्वास है कि यह कोई समाधान के साथ आईआईएस बग है। SO: http://stackoverflow.com/questions/16365483/iis-7-5-mercurial-setup-ignoring-maxallowedcontentlength आईआईएस मंच: http://forums.iis.net/post/set/1043/1197751/2049386 – jocull

+0

मेरे लिए यहां विशेष समस्या वास्तव में एसएसएल के साथ है - सादा HTTP पर सब कुछ अपेक्षित प्रतिक्रिया देता है। हालांकि, एक बार जब एसएसएल चालू हो जाता है तो यह लटकना शुरू हो जाता है। – jocull

+0

यह संभव है कि एसएसएल के साथ आईआईएस असंगतता यहां दस्तावेज के रूप में है: https://bitbucket.org/tortoisehg/thg/issue/2593/cant-push-over-30mb-to-iis-via-https - खोजने के लिए कितना दर्द !!! – jocull

उत्तर

8

आप समस्या तथ्य यह है कि web.config फ़ाइल में किए गए सेटिंग्स इसी सेटिंग्स दोनों ApplicationHost.config और machine.config फ़ाइलों में मौजूद द्वारा अधिक्रमित किया जा सकता है में झूठ सकता है।

आप इन तक पहुंच नहीं है, अगर इसी वर्गों के overrideModeDefault संपत्ति की तैयारी में हैं की अनुमति दें चेक, निम्न उदाहरण में:

machine.config

<requestFiltering overrideModeDefault="Allow"> 
    <requestLimits maxAllowedContentLength="104857600"/>   
</requestFiltering> 

AFAIK वहाँ कोई रास्ता नहीं है यदि आपके पास संबंधित कॉन्फ़िगरेशन फ़ाइल तक पहुंच नहीं है तो इन सेटिंग्स को ओवरराइड करने के लिए।

आप सिस्टम-वाइड विन्यास और सेटिंग्स के बारे में अधिक जानकारी मिल सकती ओवरराइड here, here और here - और एक बहुत ही इसी तरह के मामले here

-1

यह बहुत पुराना है। लेकिन मुझे आज भी यही समस्या है। इसे ठीक करने के लिए, आपको web.config में आवश्यक सेटिंग परिवर्तन करने की आवश्यकता है, फिर वेब सर्वर पर तैनात करें। महत्वपूर्ण हिस्सा यह है कि आपको अपने आवेदन को वेब सर्वर पर फिर से तैनात करने की आवश्यकता है। ऐसा करके, आईआईएस सेटिंग्स आपके लिए अपडेट की गई हैं। आप अपनी तैनाती कैसे करते हैं, इस पर निर्भर करते हुए, आपको वेब सर्वर से पहले अपना वेब एप्लिकेशन हटाने की आवश्यकता हो सकती है, फिर दोबारा तैनात करें। जगह में web.config को अपडेट करना समस्या को ठीक नहीं करेगा। उम्मीद है कि यह दूसरों को एक ही समस्या के साथ मदद करता है।

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