Avatar billede Lasse Novice
28. august 2009 - 16:23 Der er 6 kommentarer og
2 løsninger

Maximum request length exceeded

Jeg faar smidt en "Maximum request length exceeded" exception naar en bruger uploader en for stor fil paa min hjemmeside, f.eks. 5mb. Jeg kender til default 4mb graensen, men jeg oensker ikke at saette den op i web.config. Jeg oensker derimod at fange exceptionen - paa "page level" -, og behandle den ved at skrive en besked til brugeren "Din fil er for stor, vaelg venligst en anden".

2 loesninger har jeg fundet paa nettet:

1) Saette maxRequestLength (web.config) til en stoerrere vaerdi (f.eks. 20mb) og derefter teste om filen er for stor.

Dette er imidlertid IKKE en loesning i og med at det udsaetter problemerne, det loeser dem ikke (der er altid brugere som proever at uploade endnu stoerrere filer (f.eks. 30mb)).

2) Behandle fejlen i Application_Error.

Dette er imidlertid ikke en loesning i og med at jeg gerne vil vise fejlen paa "page level" (den side hvorpaa fejlen sker), ikke omdirigere til en anden side eller lign.


Er der nogen der har fundet en smart maade til at loese dette problem?
Avatar billede jimmydk Nybegynder
28. august 2009 - 19:20 #1
Du kan evt. lave det på denne måde

if (Opload.PostedFile.ContentLength >= 10000000)
{
    Fejl.Text = "Filen er for stor - max 10mb er tilladt";
}
else
{
    Gem filen
}
Avatar billede jimmydk Nybegynder
28. august 2009 - 20:23 #2
Glemte lige at du selvfølgelig skal have din max i web.config

<httpRuntime executionTimeout="300"  maxRequestLength="100000"/>
Avatar billede Lasse Novice
28. august 2009 - 20:28 #3
Loesningen er god (og den jeg leder efter), men den virker ikke i praksis!!!

Hvis filen er stoerrere en maxRequestLength, saa faar jeg en exception paa "application level", dvs. jeg kommer aldrig ind og koerer "page level" kode.
Avatar billede jimmydk Nybegynder
28. august 2009 - 20:39 #4
Kan du ikke poste hele din codebehind, så skal jeg prøve at kigge på den. :)
Avatar billede Lasse Novice
28. august 2009 - 21:41 #5
Jvf 1. Exceptionen bliver skudt af foer kode paa "page level" bliver eksikveret. Jeg har ingen code behind for "application level" (global.asax).
Avatar billede Sussie14 Nybegynder
31. august 2009 - 21:21 #6
Hej Gooky

Ang. til din besked om at fejlen skal håndteres på lokalt på siden så må svaret være følgende:

På din side tilføjer du dette i din Page_Load methode:
  this.Error += new EventHandler(_Default_Error);

Din skal til _Default_Error metoden skal være som følger:

void _Default_Error(object sender, EventArgs e)
{
        Response.Write("Exception occured...");

        Exception unhandledException = Server.GetLastError();
        Server.ClearError();

        // Do whatever you like with the unhandledException instance.
}

Forklaring:
1. Du slipper for global.asax
2. Du håndterer fejlen lokal - du ved den er sket på din side.
3. Du må håndtere den fejlkode eller validere på indholdet - at det er max exceed fejlen du får - hvis du ønsker at håndtere denne specifikt.
4. Husk at kalde Server.ClearErrer(), for at fortælle serveren/applikationen at fejlen, er håndteret fra du som udvikler og bør derfor stoppe her - og at den ikke skal sendes videre i systemet.

Håber det er det, du leder efter.

God arbejdslyst.
Avatar billede Lasse Novice
01. september 2009 - 00:20 #7
Min page_load bliver ikke eksikveret, saa det hjaelper ikke at oprette event handlere deri.
Avatar billede Lasse Novice
13. maj 2010 - 17:57 #8
Desvaerre er der ikke kommet loesning herpaa...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester