gpt4 book ai didi

asp.net - 在 ASP.NET 应用程序中处理大型并发 HTTP POST

转载 作者:行者123 更新时间:2023-12-02 10:28:01 25 4
gpt4 key购买 nike

客户端页面使用 JavaScript 将多部分表单数据(文件)发布到我的 ASP.NET 站点(ashx 处理程序)。

用户选择多个文件并开始并发上传。当文件大小超过 150MB 时,这会生成 ASP.NET 服务器端的多个并发 POST 处理程序。

我已经实现了 session 控制以及验证码功能,可以准确地知道它是否是淹没我服务器的机器人。

但问题出在初始上传开始时。

每次处理程序要处理 POST 时,它都会检查 session ID(我的自定义 session ,每个用户页面一个),并添加 Request.ContentLength > size 为每个 session POST 的文件总大小。该数据保存为 XML。

但是,由于多个初始帖子同时发生,记录字节总和的 XML 编写器会“阻塞”,并为所有初始 POST 报告每个 session 0 字节,因为它们同时进入.

我已经在我的 persister 对象(执行 XML 写入)上实现了 lock,但现在在一个 POST 完全处理之前,其他 POST 无法继续。

此外,即使我不对“上传限制后”传入的请求执行任何操作,它们仍然需要时间将数据上传到服务器。

所以我的问题是:

处理多个并发 POST 上传的正确模式是什么?

有没有办法在 ASP.NET 处理程序代码中过滤请求后立即删除 POST,从而节省客户端将数据上传到 IIS 的精力?

更新:当仅对 XML 写入/最大 session 长度计算进行锁定时,我仍然具有并发性,这很好。现在我只需要弄清楚如何立即从 ashx 处理程序代码中删除 session 。

最佳答案

您的 ashx 处理程序是否编写为异步执行?如果没有,这是一篇关于实现异步 ashx 处理程序的好文章:

http://msdn.microsoft.com/en-us/magazine/cc163463.aspx

关于asp.net - 在 ASP.NET 应用程序中处理大型并发 HTTP POST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9938873/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com