2012-02-16 31 views
15

Tôi có một WebMethod đơn giảnIIS7 - WebRequest thất bại với 404,13 khi kích thước của params yêu cầu vượt quá 30MB

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

Tuy nhiên, bất cứ khi nào tôi vượt qua một mảng byte mà là lớn hơn 30MB, tôi nhận được lỗi:

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

web.config của tôi là như sau:

<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> 

tôi đã tìm kiếm xung quanh, và là nguyên nhân phổ biến nhất của ngày vấn đề là thuộc tính maxAllowedContentLength là 30mb theo mặc định. Tuy nhiên, tôi đã đặt cài đặt này là 100mb, cũng như thuộc tính maxRequestLength cho httpRuntime.

Tôi không thể tìm thấy giải pháp ở bất kỳ nơi nào không đặt một trong các thuộc tính mà tôi đã thử ở trên. Có điều gì tôi đã bỏ lỡ?

+0

Điều này cũng xảy ra với tôi trong 7.5: Tôi thực sự tin rằng đây là lỗi IIS không có giải pháp. SO: http://stackoverflow.com/questions/16365483/iis-7-5-mercurial-setup-ignoring-maxallowedcontentlength Diễn đàn IIS: http://forums.iis.net/post/set/1043/1197751/2049386 – jocull

+0

Vấn đề cụ thể ở đây đối với tôi thực sự là với SSL - trên tất cả mọi thứ HTTP đều đáp ứng như mong đợi. Tuy nhiên, sau khi SSL được bật, nó bắt đầu treo. – jocull

+0

Có thể có sự không tương thích IIS với SSL như được ghi ở đây: https://bitbucket.org/tortoisehg/thg/issue/2593/cant-push-over-30mb-to-iis-via-https - Thật là một nỗi đau để khám phá !!! – jocull

Trả lời

8

Bạn vấn đề có thể nằm trong thực tế là thiết lập được thực hiện trong web.config tập tin có thể được thay thế bởi các thiết lập tương ứng hiện diện trong cả applicationhost.configMachine.config tập tin.

Nếu bạn có quyền truy cập vào đó, kiểm tra xem overrideModeDefault tài sản của các phần tương ứng được thiết lập để phép, như trong ví dụ sau:

machine.config

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

AFAIK không có cách nào để ghi đè các cài đặt này nếu bạn không có quyền truy cập vào tệp cấu hình tương ứng.

Bạn có thể tìm thêm thông tin về cấu hình và cài đặt toàn hệ thống ghi đè here, herehere - và trường hợp rất giống nhau here.

-1

Điều này khá cũ. Nhưng hôm nay tôi có cùng một vấn đề. Để khắc phục điều này, bạn cần thực hiện các thay đổi thiết lập cần thiết trong web.config, sau đó triển khai đến máy chủ web. Phần quan trọng là bạn cần triển khai lại ứng dụng của mình tới máy chủ web. Bằng cách đó, các thiết lập IIS được cập nhật cho bạn. Tùy thuộc vào cách bạn triển khai, bạn có thể cần xóa ứng dụng web của bạn khỏi máy chủ web trước, sau đó triển khai lại. Cập nhật web.config tại chỗ sẽ không khắc phục được sự cố. Hy vọng điều này sẽ giúp những người khác với cùng một vấn đề.

Các vấn đề liên quan