2011-01-04 11 views
2

ich auf eine Fehlerseite direkte Benutzer versuchen, wenn die maximale Größe Fileupload excedds.For diese iam, das Folgende tun:Umleitung auf Fehler bei Überschreiten Fileupload Größe

public void Init(HttpApplication application) 
    { 
     application.BeginRequest += new EventHandler(application_BeginRequest); 
    } 

    void application_BeginRequest(object sender, EventArgs e) 
    { 
     HttpApplication application = (HttpApplication)sender; 
     HttpContext context = application.Context; 
     if (context.Request.ContentLength > 4096000) 
     { 
      context.Response.Redirect("~/Error.aspx"); 
     } 
    } 
    public void Dispose() 
    { 
    } 

Aber mit einer Größe von mehr als die Datei hochladen max filesize zeigt einen "connection reset" Fehler an. Wie soll ich das machen?

Antwort

0

Die Laufzeit von ASP.NET lehnt die Anforderung möglicherweise ab, noch bevor Ihre Anwendung gestartet wird. Überprüfen Sie die maximale Anforderungslänge in einer web.config gesetzt - sollte der Wert größer als derjenige der Anwendung erwartet:

IIS6/IIS7 (klassische Pipeline und integrierte Pipeline):

<system.web> 
    <!-- The value is in KB --> 
    <httpRuntime maxRequestLength="4096" /> 
</system.web> 

IIS7 (integrierte Rohrleitung):

<system.webServer> 
    <security> 
    <requestFiltering> 
     <!-- The value is in bytes --> 
     <requestLimits maxAllowedContentLength="209715200" /> 
    </requestFiltering> 
    </security> 
</system.webServer> 

Hoffe, dass dies helfen wird.

- Pavel

+0

Ich legte einen Debugger auf context.Response.Redirect ("~/Error.aspx"); es kommt zu diesem Punkt. –

+0

Bitte lesen Sie meine andere Antwort ;-) – volpav

0

Ich glaube, dass dies von dem Handler richtig zu tun, müssen Sie alle Daten aus der Anforderung lesen, bevor die Antwort Senden/umleiten. Alternativ können Sie dies über einen ISAPI-Filter tun und vermeiden, die Daten lesen zu müssen.

0

Sie können Toolkit AsyncFileUpload-Steuerelement verwenden und dann den Fehler auf der Clientseite abfangen und auf die Fehlerseite umleiten.

AsyncFileUpload: How do I hide the max request length exceeded alert error?

<asp:AsyncFileUpload ID="fileUpload" 
        runat="server" OnClientUploadError="onUploadError" 
        OnClientUploadComplete="uploadComplete" 
        OnUploadedComplete="OnUploadComplete" /> 

<script language="javascript" type="text/javascript"> 

    function onUploadError() 
    { 
      //Redirect to error page. 
    } 

    function uploadComplete() 
    { 

    } 


</script> 
+0

aber Ansatz funktioniert nicht in ASP.NET MVC. –

+0

@Niraj: Können Sie eine Warnung anzeigen, dass die hochgeladene Datei das Limit überschreitet? – dhinesh

0

Nach dem post den Grund kann nur eine Umleitung auf lokalen Standort sein:

Es ist nicht zu funktionieren scheint, wenn der Server lokal (entweder durch Verwendung von localhost, lokale IP oder http://machinename/). Der Browser nur reagiert wie der Server vollständig hat die Verbindung abgebrochen - Verbindung Reset durch Peer/Verbindung wurde zurückgesetzt (FF)/kann die Webseite nicht anzeigen (IE).

Verwandte Themen