簡體   English   中英

使用HttpWebRequest向servicestack服務發送大型(8mb)excel文件時出錯

[英]Error while sending large (8mb) excel file using HttpWebRequest to servicestack service

我正在嘗試將大型excel文件發送到其余服務(使用servicestack)。

客戶端和服務器(Servicestack服務)應用程序部署在不同的服務器上。

我在客戶端使用以下代碼上傳excel文件(8 MB大小)

取自

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();

當上傳的文件是2-3 MB時,上面的代碼工作正常。 當文件大小約為8MB時,它會拋出錯誤。
調試它時會出現以下錯誤

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:

我試過更改可以看作連接的設置值。

可能是什么問題? 請幫忙

更新1:我在服務器上有IIS 8.5,所以我認為文件大小(8mb)可能不是問題。 我是否仍需要在web.config中添加一些設置以允許通過POST發送大尺寸文件

更新2:找到解決方案。 添加maxAllowedContentLength和maxRequestLength就可以了。 請在評論部分查看Smartdev提供的鏈接

您仍然需要編輯web.config文件。 它應該如下所示:

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

這將允許您上傳最多10MB

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM