Почему WebClient.UploadFileAsync не работает с большими загрузками файлов? - PullRequest
1 голос
/ 29 апреля 2011

Я загружаю файл из приложения C # на веб-сайт ASP.Net, оба написаны мной, поэтому у меня есть доступ к коду.

Но он работает для текстового файла (1 КБ), но не для файла MOV (77 МБ).

В обоих случаях я использую UploadProgressChanged для получения прогресса. Файл TXT идет до 100%, в то время как файл MOV идет только до 50%. После этого я нахожу только файл TXT, сохраненный на сервере, но не файл MOV.

Почему это происходит? Как мне заставить его работать?

Код приложения 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 ]

3 голосов
/ 29 апреля 2011

Вы можете изменить ограничение по умолчанию (4 МБ) локализованным способом, поместив файл web.config в каталог, в котором находится страница загрузки.Таким образом, вам не нужно разрешать огромные загрузки по всему сайту (это может привести к определенным видам атак).

Вот пример из производственного приложения.Этот установлен на 100 МБ:

<configuration>
  <system.web>
  <httpRuntime maxRequestLength="100000" executionTimeout="600" />
  </system.web>
</configuration>
0 голосов
/ 29 апреля 2011

Исключение выдается, когда указанное значение меньше 1 килобайта и больше 4194304 килобайт (4 ГБ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...