大 HttpWebRequest 发布帖子或 PUT 基于.NET framework 4.5 的内存优化

症状

当HttpWebRequest类用于为 HTTP POST 发送大量的数据,或放入请求,该请求可能失败 Microsoft.NET Framework 运行的计算机上。此外,您可能会收到内存不足异常。

您可能会注意到使用HttpWebRequest类的应用程序会占用大量内存。当您使用性能监视器监视的应用程序使用HttpWebRequest类时,专用字节数将继续增加发送数据时。

原因

由于.NET Framework 默认缓冲传出的数据,使用HttpWebRequest类时,将出现此问题。知识库文章文档的原始问题。

解决方案

要变通解决此问题,请HttpWebRequest.AllowWriteStreamBuffering属性设置为false。通过执行此操作,传出数据 (实体) 开机自检或 PUT 请求不会缓存在内存。

在 Microsoft.NET Framework 4.5 比先前的版本中,将 HttpWebRequest.AllowWriteStreamBuffering 属性设置为 false 将有时导致错误时将数据上载到已验证身份的终结点。例如,您可能会遇到 System.Net.WebException"该请求需要缓冲数据才能成功"的消息。但是在更深入的调查与该异常关联的响应实际表明 System.Net.HttpStatusCode.Unauthorized (401) 状态代码。知识库文章文档预身份验证和保活连接,以处理 401 响应的一种替代方法。

与 Microsoft.NET Framework 1.1 版、 2.0、 3.0、 3.5 和 4.0,Microsoft.NET Framework 4.5 添加新设计功能的HttpWebRequest.AllowWriteStreamBuffering属性。新的功能,只要 Expect100Continue 功能可直接处理的身份验证方案。默认的ServicePointManager.Expect100Continue值为true。

详细信息

有关基于 Microsoft.NET Framework 1.1 版、 2.0、 3.0、 3.5 和 4.0 HttpWebRequest.AllowWriteStreamBuffering解决方案的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章︰
的 POST 或 PUT 请求可能失败时使用 HttpWebRequest 类可以在正在运行的.NET Framework 的计算机发送大量的数据

HttpWebRequest.AllowWriteStreamBuffering属性的更多信息,请访问下面的 Microsoft 开发人员网络 (MSDN) Web 站点︰


ServicePointManager.Expect100Continue属性的更多信息,请访问下面的 Microsoft 开发人员网络 (MSDN) Web 站点︰



需要更多帮助?

扩展你的技能
了解培训
抢先获得新功能
加入 Microsoft 内部人员

此信息是否有帮助?

谢谢您的反馈意见!

谢谢你的反馈! 可能需要转接到 Office 支持专员。

×