C# ASP.net:在N次大型上载后,并发文件上载失败

C# ASP.net:在N次大型上载后,并发文件上载失败,c#,asp.net,file-upload,concurrency,C#,Asp.net,File Upload,Concurrency,我正在开发一个asp.net(Webforms、asp.NET2.0、Framework 3.5)应用程序。它是在IIS 7.0上运行的32位应用程序,带有操作系统Windows 2008 R2 SP1 我面临着一个大文件上传的问题。超过20MB左右的文件。应用程序能够上载大文件,但是,注意到在N次上载之后,下一组上载将继续失败,直到IIS重新启动 该应用程序支持并发文件上载。需要注意的是,单个大文件上传总是有效的。只有当我们开始上传超过1个文件时,其中一个上传才会被卡住 我试着查看上传文件数据

我正在开发一个asp.net(Webforms、asp.NET2.0、Framework 3.5)应用程序。它是在IIS 7.0上运行的32位应用程序,带有操作系统Windows 2008 R2 SP1

我面临着一个大文件上传的问题。超过20MB左右的文件。应用程序能够上载大文件,但是,注意到在N次上载之后,下一组上载将继续失败,直到IIS重新启动

该应用程序支持并发文件上载。需要注意的是,单个大文件上传总是有效的。只有当我们开始上传超过1个文件时,其中一个上传才会被卡住

我试着查看上传文件数据的临时文件夹,注意到当问题发生时,失败文件的上传从不从服务器的角度开始,因为它从不生成任何临时文件,几秒钟后,请求失败

当事情失败时, CPU一切正常 W3wp的内存使用率为2 GB(相对于总共4 GB的RAM) W3wp没有显示崩溃,因为应用程序的其他页面仍然可以正常工作

我尝试使用wireshark查看网络流量,但它也会显示ERR\u connection\u RESET。除此之外,我没有任何线索

我怀疑下面的事情,但不知道如何总结或修复。 1) 要启动并发上传,服务器需要跟上客户端的数据传输速率,当无法匹配时,它必须在内部失败。这可能是因为服务器无法处理并发请求。 2) 频繁的大型上载会增加应用程序的内存占用,使其无法处理并发上载,因为要以分块方式将文件转储到临时位置,仍然需要RAM

这是我的web配置设置

<httpRuntime maxRequestLength="2097151" executionTimeout="10800" enableVersionHeader="false"/>
服务器端代码表示:

 //Set HTTP headers
_http.setRequestHeader("x-uploadmethod", "formdata");
_http.setRequestHeader("x-filename", "Name of file");

// Prepare form data
var data = new FormData();
data.append("Name of file", File contents);

//Sends XHR request
_http.send(data);
HttpFileCollection files = Request.Files;
int Id = objUpload.UploadMyAssets(files[0]);
UploadMyAssets中的逻辑将文件[0]作为HttpPostedFile,然后继续使用特定于应用程序的逻辑


谢谢,我也有同样的问题。结果表明,ASP.NET默认会话管理器正在使用https(HTTP/2)上的异步流进行阻塞。没有在http(非ssl)上发生。 通过对控制器类使用SessionStateBehavior.Readonly解决了此问题。与此职位相关:

你能展示一下你正在完成和处理上传的代码吗?代码表示我会很快看一看,看看我能找到什么,这些代码块的flie类型是什么,这样我就可以试着重现这个问题了。那么,我假设这也是一个WebForms项目,对吗?