为什么WebClient.UploadFileAsync不能用于大文件上传?

时间:2011-04-29 05:36:45

标签: c# asp.net ajax vb.net file-upload

我正在将文件从C#应用程序上传到ASP.Net网站,这两个文件都由我编写,因此我可以访问该代码。

但是,它适用于文本文件(1KB),但不适用于MOV文件(77MB)。

在这两种情况下,我都使用UploadProgressChanged来获取进度。 TXT文件变为100%,而MOV文件仅变为50%。完成后,我只找到保存在服务器上但不保存MOV文件的TXT文件。

为什么会这样?我怎样才能让它发挥作用?

Windows应用程序代码 - C#

Client.UploadFileAsync(new Uri("http://localhost:xxxxxx/Default.aspx"),  "c:\\1.MOV");

Default.aspx代码 - VB

Protected Sub Page_Load(...) Handles Me.Load
    If Request.Files IsNot Nothing Then
        If Request.Files.Count > 0 Then
            Request.Files(0).SaveAs(Server.MapPath("~/1.mov"))
            Response.Write("File saved at: " + Server.MapPath("~/1.mov"))
        Else
            Response.Write("At least one file should be sent")
        End If
    Else
        Response.Write("No file received")
    End If
End Sub

2 个答案:

答案 0 :(得分:3)

  

您可以通过在上传页面所在的目录中删除web.config文件,以本地化方式更改默认限制(4mb)。这样你就不必在你的整个网站上进行大量上传(这样做会让你受到某种攻击)。

以下是制作应用的示例。这个设置为100mb:

<configuration>
  <system.web>
  <httpRuntime maxRequestLength="100000" executionTimeout="600" />
  </system.web>
</configuration>

答案 1 :(得分:0)

当指定值小于1千字节且大于4194304千字节(4 GB)时抛出异常。