Ошибка загрузки файла для файлов размером более 64 МБ

У меня есть веб-сайт, который позволяет безопасно (ssl) загружать и скачивать файлы. Сайт работает на сервере Windows 2003 с IIS 6.0; асп.нет 2.

При использовании этого кода:

 protected void StartDownLoad(string filename)
    {
        Response.Clear();
        if(filename.EndsWith("zip"))
            Response.ContentType = "application/zip";
        else
            Response.ContentType = "application/msword";

        string path = "C:\\Inetpub\\sites\\testsite\\secureDocs\\" + filename;
        Response.WriteFile(path);
        string headDesc = "inline;filename=" + filename;

        Response.AddHeader("Content-Disposition", headDesc);
        Response.End();
    }

В моих тестах файл размером 62 МБ загружается без каких-либо проблем — кажется, что файл размером 65 МБ начинает загрузку, а затем сразу же останавливается. Журналы ошибок http содержат четыре записи, в каждой из которых указано «Connection_Dropped». Если я удаляю разрешения для папки и напрямую получаю доступ к файлу через URL-адрес https, я могу загружать файлы, размер которых превышает 65 МБ, поэтому не похоже, что это проблема IIS. Есть ли настройка asp.net, которая ограничивает запись ответа? Это проблема IIS? Кто-нибудь сталкивался с этим раньше? Любые решения?


person Geri Langlois    schedule 27.10.2009    source источник


Ответы (1)


Вы можете попробовать использовать

Response.TransmitFile(path) 

вместо

Response.WriteFile(path)

TransmitFile() не буферизует файл.

До свидания.

person RRUZ    schedule 27.10.2009