Max*_*lov 6 asp.net iis concurrency file-upload http-post
客户端页面使用javascript将多部分表单数据(文件)发布到我的ASP.NET站点(ashx处理程序).
用户选择多个文件并开始并发上传.当文件类似于150MB +时,这将生成ASP.NET服务器端的多个并发POST处理程序.
我实现了会话控制,以及验证码功能,以确切知道它是不是泛滥我的服务器的机器人.
但问题是初始上传开始.
每次处理程序要处理a时POST,它都会检查会话的ID(我的自定义会话,每个用户页面一个),并将Request.ContentLength大小添加到POST每个会话编辑的文件总大小.此数据将保存到XML.
但由于几个初始帖子同时发生,一个XML编写器记录字节总和"chokes"并报告所有初始POSTs的每个会话0字节,因为它们同时进入.
我已经实现lock了我的persister对象(它执行XML编写),但现在直到一个POST完全处理,其他人不能继续.
即使我对"上传限制之后"的请求没有做任何事情,他们仍然需要时间将数据上传到服务器.
所以我的问题是:
处理多个并发POST上传的正确模式是什么?
有没有办法在ASP.NET处理程序代码中过滤请求后立即删除POST,并保存客户端将数据上传到IIS的工作量?
更新:当lock仅进行XML写入/最大会话长度计算时,我仍然具有并发性,这很好.现在我只需要弄清楚如何立即从ashx处理程序代码中删除会话.
您的 ashx 处理程序是否编写为异步执行?如果没有,这是一篇关于实现异步 ashx 处理程序的好文章:
http://msdn.microsoft.com/en-us/magazine/cc163463.aspx
| 归档时间: |
|
| 查看次数: |
1155 次 |
| 最近记录: |