Omezení velikosti HTTP požadavku v ASP.NET
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama

Omezení velikosti HTTP požadavku v ASP.NETOmezení velikosti HTTP požadavku v ASP.NET

 
Hledat
Moderní platforma pro vytvoření vašeho nového webu – Wix.com.
Nyní už můžete mít web zdarma.
Vybavení pro Laser Game
Spuštěn Filmový magazín
Laser Game Brno

Omezení velikosti HTTP požadavku v ASP.NET

Google       Google       9. 10. 2007       8 990×

V tomto krátkém článku bych vám rád ukázal, jak omezit maximální velikost HTTP požadavku v prostředí ASP.NET. Dozvíte se, jak maximální velikost nastavit a jak zabránit pádu aplikace, který nastane při jejím překročení.

Reklama
Reklama

Téměř každý z vás už někdy potřeboval na server odeslat nějaký soubor a následně ho uložit do složky/databáze (tím se zabývat nebudu). Data všech odesílaných souborů jsou součástí HTTP requestu a tak se může snadno stát, že dojde k překročení jeho maximální velikosti.

Mým dnešním úkolem je říct vám, jak takovou maximální velikost nastavit a jak zabránit pádu aplikace v případě jejího překročení.

Změna maximální velikosti

Konfigurace probíhá samozřejmě v souboru web.config a tentokrát stačí přidat jeden řádek kódu do sekce .

<httpRuntime maxRequestLength="6144" />

Hodnotu attributu maxRequestLength je nutné zadávat v kilobytech. Defaultní hodnota je 4096 kB.

Ověření velikosti požadavku

Nejlepším místem pro ověření velikosti požadavku je podle mě soubor global.asax, který vytváří třídu odvozenou od třídy HttpApplication a může tak reagovat na různé aplikační události.

V první řadě je dobré ze souboru web.config získat maximální velikost požadavku, to lze provést při inicializaci aplikace. Proměnná maxRequestLength je definována ve stejné třídě a ve výchozím stavu je její hodnota 4096.

/// <summary>
/// Při inicializaci aplikace zjistí, jaká je maximální velikost HTTP požadavku.
/// </summary>
public override void Init()
{
    // získá sekci <httpRuntime>
    HttpRuntimeSection section = ConfigurationManager.GetSection("system.web/httpRuntime") as HttpRuntimeSection;

    // předá hodnotu attributu maxRequestLength
    if (section != null)
    {
        this.maxRequestLength = section.MaxRequestLength;
    }

    // inicializuje aplikaci
    base.Init();
}

Následně musíte porovnat maximální velikost s velikostí právě probíhajícího požadavku, a to nejlépe hned na jeho začátku. Pokud to neuděláte, může dojít k pádu aplikace.

/// <summary>
/// Pokud velikost požadavku přesáhne maximální velikost, přesměruje na stránku s chybou.
/// </summary>
private void Application_BeginRequest(object sender, EventArgs e)
{
    // pokud jde o stránku s uploadem
    if (this.Request.Path.ToLower().Contains("default.aspx"))
    {
        // získá aktuální velikost požadavku
        long requestLength = this.Request.ContentLength;

        // pokud přesahuje maximální velikost požadavku
        if ((requestLength / 1024) > maxRequestLength)
        {
            // přesměruje na stránku s chybou
            this.Response.Redirect(string.Format("{0}?action=error&size={1}", this.Request.Path, this.maxRequestLength));
        }
    }
}

Věřím, že jsem vás přivedl na správnou cestu a že už zbytek zvládnete sami. Pokud s tím budete mít problémy, můžete si stáhnout zdrojové kódy celé aplikace (kompilace vyžaduje Web Application Project).

×Odeslání článku na tvůj Kindle

Zadej svůj Kindle e-mail a my ti pošleme článek na tvůj Kindle.
Musíš mít povolený příjem obsahu do svého Kindle z naší e-mailové adresy kindle@programujte.com.

E-mailová adresa (např. novak@kindle.com):

TIP: Pokud chceš dostávat naše články každé ráno do svého Kindle, koukni do sekce Články do Kindle.

Hlasování bylo ukončeno    
0 hlasů
Google
(fotka) Dušan JanošíkDušan vyvíjí software a webové aplikace na platformě .NET. Je milovníkem neuznávaných teorií, a zajímá se o parapsychologii a teraristiku.
Web     Twitter     Facebook     LinkedIn    

Nové články

Reklama
Reklama
Obrázek ke článku Jak fungoval internet ve vlaku během Train Hackathonu Kiwi.com?

Jak fungoval internet ve vlaku během Train Hackathonu Kiwi.com?

“Hackathon bez internetu?” posmívala se v komentářích pod pozvánkami na loňský #kiwicomtrainhack IT komunita napříč weby i sociálními sítěmi. Poznámky se zdály oprávněné, internetové připojení v českých vlacích má různou kvalitu a pořádat hackathon, na kterém je kvalitní internetové připojení základním požadavkem na organizátory, se zdálo být troufalé.

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032018 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý