2015-09-08 14 views
6

Tôi đang cố gắng gửi tệp excel lớn đến dịch vụ còn lại (sử dụng servicestack).Lỗi khi gửi tệp excel lớn (8mb) bằng cách sử dụng HttpWebRequest đến dịch vụ servicestack

ứng dụng khách và máy chủ (dịch vụ Servicestack) được triển khai trên máy chủ khác.

Tôi đang sử dụng đoạn mã sau vào phía khách hàng để tải lên các tập tin excel (8 mb kích thước)

lấy từ

http://www.codeproject.com/Articles/501608/Sending-Stream-to-ServiceStack

HttpWebRequest client = (HttpWebRequest)WebRequest 
       .Create(ConfigurationManager 
       .AppSettings["applicationUrl"] 
        + @"/servicename/" 
        + fileUpload.FileName 
        + @"/" + FileType + @"/" 
        + Utility.UserName + @"/" 
        + Utility.EmployerID + @"/" 
        + UploadedFrom); 

client.Method = WebRequestMethods.Http.Post; 

////the following 4 rows enable streaming 
    client.AllowWriteStreamBuffering = false; 
    client.SendChunked = true; 
    client.ContentType = "multipart/form-data;"; 
    client.Timeout = int.MaxValue; 
    // client.KeepAlive = false; 
    //client.ProtocolVersion = HttpVersion.Version10; 
//client.ContentLength = 0; 
//client.Timeout = Timeout.Infinite; 
//client.AllowWriteStreamBuffering = true; 
Stream stream = fileUpload.InputStream; 

if (stream.CanRead) 
{ stream.Copy(client.GetRequestStream()); 
} 

    var response = new StreamReader(client.GetResponse().GetResponseStream()).ReadToEnd(); 

mã ở trên hoạt động tốt khi tập tin được tải lên được 2-3 MB. nó ném lỗi khi kích thước tệp lớn khoảng 8MB.
khi gỡ lỗi nó mang lại cho tôi sau lỗi

System.Net.WebException was caught 
    HResult=-2146233079 
    Message=The remote server returned an error: (500) Internal Server Error. 
    Source=System 
    StackTrace: 
     at System.Net.HttpWebRequest.GetResponse() 
     at Myproject.Web.Controllers 
        .Employer.FileUploadController 
        .Upload(FileUploadViewModel fileUploadViewModel 
     ,HttpPostedFileBase fileUpload 
     ,String DataFileType 
     ,String UploadedFrom) 
    in d:\MyProject\projNewArch\Controllers\Employer\FileUploadController.cs:line 262 
    InnerException: 

tôi đã cố gắng thay đổi các giá trị thiết lập có thể được xem như kết nối.

Điều gì có thể là vấn đề? Vui lòng giúp

Cập nhật 1: tôi có IIS 8.5 tại máy chủ vì vậy tôi nghĩ kích thước tệp (8mb) có thể không phải là vấn đề. Tôi vẫn cần phải thêm một số cài đặt trong web.config để cho phép gửi tệp có kích thước lớn qua POST

CẬP NHẬT 2: Tìm thấy giải pháp. Thêm maxAllowedContentLength và maxRequestLength thực hiện thủ thuật. Vui lòng kiểm tra liên kết được cung cấp bởi Smartdev trong phần ý kiến ​​

+1

Liên kết này có thể có liên quan: http://stackoverflow.com/questions/2880722/is-http -post-limitless – Ulric

+1

'(500) Lỗi Máy chủ Nội bộ' bạn cần xem xét các dấu vết * máy chủ * và gỡ lỗi máy chủ * *. –

+0

@ulric Tôi đã cập nhật qustion. bạn có nghĩ đó có phải là vấn đề không? – amol

Trả lời

1

Bạn vẫn cần chỉnh sửa tệp web.config của mình. Nó sẽ giống như thế này:

<system.webServer> 
<security> 
    <requestFiltering> 
    <requestLimits maxAllowedContentLength="10485760" /> 
    </requestFiltering> 
</security> 

này sẽ cho phép bạn tải lên tối đa 10MB

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