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

 

Omezení velikosti HTTP požadavku v ASP.NET

Google       Google       9. 10. 2007       8 337×

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 Blockchain & Bitcoin konference

Blockchain & Bitcoin konference

V pátek 19. 5. 2017 se v pražském konferenčním centru Andel’s konala Blockchain & Bitcoin konference. Řada odborníků a podnikatelů v oboru blockchainu a kryptoměn představila možnosti budoucího směřování tohoto oboru. Speakeři většinou rusky mluvící provenience prezentovali řešení svých firem založená na technologii blockchainu.

Obrázek ke článku Malware KONNI se úspěšně skrýval 3 roky. Odhalil ho bezpečnostní tým Cisco Talos

Malware KONNI se úspěšně skrýval 3 roky. Odhalil ho bezpečnostní tým Cisco Talos

Bezpečnostní tým Cisco Talos odhalil celkem 4 kampaně dosud neobjeveného malwaru, který dostal jméno KONNI. Ten se dokázal úspěšně maskovat od roku 2014. Zpočátku se malware zaměřoval pouze na krádeže citlivých dat. Za 3 roky se ale několikrát vyvinul, přičemž jeho současná verze umožňuje útočníkovi z infikovaného počítače nejenom krást data, ale i mapovat stisky na klávesnici, pořizovat screenshoty obrazovky či v zařízení spustit libovolný kód. Pro odvedení pozornosti oběti zasílali útočníci v příloze také obrázek, zprávu a výhružkách severokorejského režimu či kontakty na členy mezinárodních organizací.

loadingtransparent (function() { var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; po.src = 'https://apis.google.com/js/plusone.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); })();
Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032017 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý