使用 HTTP Post 发送大型数据时出错

本文关键字:数据 出错 大型 HTTP Post 使用 | 更新日期: 2023-09-27 18:34:41

我使用以下代码将数据从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也没有限制。

几天来我一直在尝试寻找解决方案,因此任何指示都将不胜感激。

谢谢!

使用 HTTP Post 发送大型数据时出错

在 IIS 中,http 默认默认值的最大大小设置为 4Mg。您必须更改此设置以允许更大的流。

http://support.microsoft.com/default.aspx?scid=kb;EN-US;295626

下面是如何增加此限制的示例。

IIS 7 httpruntime maxRequestLength 限制 2097151

如果您拥有网站结帐 IIS 请求限制

http://www.iis.net/configreference/system.webserver/security/requestfiltering/requestlimits

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

尝试将 HttpWebRequest.SendChunked 属性设置为 true。