ASP.NET C#FileUpload.SaveAs(文件名)用于大型文件

ASP.NET C#FileUpload.SaveAs(文件名)用于大型文件,c#,asp.net,upload,webserver,large-files,C#,Asp.net,Upload,Webserver,Large Files,我正在尝试使用ASP.Net中的FileUpload控件将文件上载到服务器。我希望能够上传超过1GB的文件,而且可能永远不会超过2GB。目前我有以下上传代码: string filename = FileUpload1.PostedFile.FileName; filename = filename.Remove(filename.Count() - 4) + "-" + DateTime.Now.ToShortDateString() + ".zip"; filename = filename

我正在尝试使用ASP.Net中的FileUpload控件将文件上载到服务器。我希望能够上传超过1GB的文件,而且可能永远不会超过2GB。目前我有以下上传代码:

string filename = FileUpload1.PostedFile.FileName;
filename = filename.Remove(filename.Count() - 4) + "-" + DateTime.Now.ToShortDateString() + ".zip";
filename = filename.Replace(" ", "-");
filename = filename.Replace("/", "-");

//attempt to save the file
FileUpload1.SaveAs("C:\\Uploads\\" + filename);
我遇到的错误是,在长时间尝试上载文件后,服务器超时。我已经广泛阅读了相关内容,并发现了许多关于我的web.config的建议,现在看起来如下:

<system.web>
  <compilation debug="true" targetFramework="4.5" />
  <httpRuntime targetFramework="4.5" maxRequestLength="999999999" executionTimeout="100000000" />
  <customErrors mode="Off"/>
</system.web>
<system.webServer>
  <security>
    <requestFiltering>
      <requestLimits maxAllowedContentLength="4000000000"/>
    </requestFiltering>
  </security>
</system.webServer>


我不想使用一个已经编写好的工具,比如NeatUpload,因为我真的很想让这个当前代码正常工作。如果有人有任何建议,或想了解更多详细信息,请告诉我,谢谢。

我理解您希望让“您的”代码正常工作的愿望,但使用ASP.NET FileUpload控件上载您所说的数量级的文件确实是一场艰苦的战斗。我相信即使你能做到这一点,当有人开始上传1GB以上大小的文件时,你也不会对网站的内存使用或响应感到满意,更不用说多人了

我认为您更好的开发工作可能是一个定制的HTTP处理程序,它可以将您的文件分块并上传到更易于管理的部分,因为HTTP从来没有被设计为进行大规模文件传输,这是最(几乎所有)的原因ASP.NET FileUpload的免费开源替代方案可以使用对文件进行分块的HTTP处理程序,也可以使用浏览器扩展名(Flash、Silverlight等)来承载发送到服务器的分块


NeatUpload是开源的

您是否调试过,以检查超时是在上载期间还是在您的方法保存文件时?如何创建httphandler?我想我也需要httpWebRequest,那么我该如何创建它呢?我不确定我能说得比httpWebRequest更好