我使用以下代码从WinForms应用程序向Web API发送数据:
private string SendBatch(string URL, string POSTdata)
{
string responseData = "";
try
{
HttpWebRequest hwrequest = (HttpWebRequest)WebRequest.Create(URL);
hwrequest.Timeout = 600000;
hwrequest.KeepAlive = true;
hwrequest.Method = "POST";
hwrequest.ContentType = "application/x-www-form-urlencoded";
byte[] postByteArray = System.Text.Encoding.UTF8.GetBytes("data=" + POSTdata);
hwrequest.ContentLength = postByteArray.Length;
System.IO.Stream postStream = hwrequest.GetRequestStream();
postStream.Write(postByteArray, 0, postByteArray.Length);
postStream.Close();
HttpWebResponse hwresponse = (HttpWebResponse)hwrequest.GetResponse();
if (hwresponse.StatusCode == System.Net.HttpStatusCode.OK)
{
System.IO.StreamReader responseStream = new System.IO.StreamReader(hwresponse.GetResponseStream());
responseData = responseStream.ReadToEnd();
}
hwresponse.Close();
}
catch (Exception e)
{
responseData = "An error occurred: " + e.Message;
}
return responseData;
}
}
当我发送少量数据时,API会毫无问题地接收数据。但是,当我尝试发送大量数据(30MB +)时,我从通过格式错误的数据发送的API中收到错误。
我已将超时设置为10分钟,并在大约2分钟后收到错误。
根据我在SO上遇到的问题,对帖子大小没有限制,对API没有限制。
我已经尝试了几天找到解决方案,所以任何指针都会非常受欢迎。
谢谢!
答案 0 :(得分:2)
在IIS中,http post默认值的最大默认大小设置为4Mg。您必须更改此项以允许更大的流。
http://support.microsoft.com/default.aspx?scid=kb;EN-US;295626
以下是如何增加此限制的示例。
答案 1 :(得分:1)
如果您拥有网站结帐IIS请求限制
http://www.iis.net/configreference/system.webserver/security/requestfiltering/requestlimits
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="4294967295" />
答案 2 :(得分:0)
尝试将HttpWebRequest.SendChunked Property设置为true。