ASP FileUpload Silent Fail - PullRequest
       4

ASP FileUpload Silent Fail

2 голосов
/ 14 марта 2012

У меня проблема с использованием FileUpload для больших файлов.Если я загружаю небольшой файл (~ 10 КБ), он работает нормально.Загрузка большого файла (~ 60 МБ) не вызывает исключения, она просто перезагружает страницу.Прежде чем кто-нибудь спросит: <httpRuntime maxRequestLength="2097151" executionTimeout="3600" waitChangeNotification="1" maxWaitChangeNotification="3600" requestValidationMode="2.0" />

Страница:

<%@ AutoEventWireup="true" CodeFile="~/LargeFileUploadControl.aspx.cs" Inherits="LargeFileUploadControl" %>
<html>
<body>

<form runat="server">
<asp:Label ID="theOnlyLabel" runat="server" Text="Uploaded files will go to a place"/><br />
<asp:FileUpload ID="theOnlyUpload" runat="server" /><br />
<asp:Button ID="theOnlyButton" onClick="StartUpload" Text="Upload" runat="server" />
</form>
</body>
</html>

Код:

public partial class LargeFileUploadControl:Page
{
public string _uploadDir;

/// <summary>
/// Content loaded event handler
/// </summary>
protected override void  OnLoad(EventArgs e)
{
    base.OnLoad(e);
    _uploadDir = "D:\\web\\tikt.imaginuity.com\\TIKT\\media\\TIKT\\Global Large Uploads\\";
    theOnlyLabel.Text = "Uploaded files will go to " + _uploadDir;
}


protected void StartUpload(object sender, EventArgs e)
{
    if (theOnlyUpload.HasFile)
    {
        theOnlyLabel.Text = "Uploading...";
        theOnlyUpload.SaveAs(_uploadDir + theOnlyUpload.FileName);
        theOnlyLabel.Text = "File saved to " + _uploadDir + theOnlyUpload.FileName;
    }
    else
    {
        theOnlyLabel.Text = "No file to upload";
    }

    return;
}
}

РЕДАКТИРОВАТЬ: Я уже попробовалответьте ниже, или я так думал.Посмотрев еще раз, я обнаружил, что в моем web.config есть два <system.webServer> раздела, которые оба нуждаются в изменении.

Ответы [ 4 ]

2 голосов
/ 14 марта 2012

Это исправит вашу проблему, если вы используете iis7. Я тестировал на загружаемый файл размером более 400 МБ,

Добавьте следующую конфигурацию в ваш файл web.config под элементом.

<security>
  <requestFiltering>
    <requestLimits maxAllowedContentLength="524288000"/>
  </requestFiltering>
</security>
0 голосов
/ 14 марта 2012

сделать выполнениеTimeout = "9000" в вашем теге ...

0 голосов
/ 14 марта 2012

Проверьте SlickUpload: http://slickupload.com/

Даже если вы не собираетесь использовать бесплатную версию, они очень хорошо говорят о смягчении ограничений на запросы в IIS 6 и IIS 7,в их документах:

http://slickupload.com/documentation/installation

В частности, перейдите на эту страницу и выполните Control-F для «requestFiltering» и посмотрите на раздел, который они упоминают, добавляя в web.config.

0 голосов
/ 14 марта 2012

Если это на IIS7, вам также необходимо перенастроить его для приема файлов> ~ 30 МБ: http://www.iislogs.com/steveschofield/iis7-post-40-adjusting-file-upload-size-in-iis7

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