Omezení velikosti HTTP požadavku v ASP.NET
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
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 065×

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

Obrázek ke článku Nový IT hráč na českém trhu

Nový IT hráč na českém trhu

V roce 2015 otevřela v Praze na Pankráci v budově City Tower své kanceláře společnost EPAM Systems (NYSE:EPAM), jejíž centrála se nachází v USA. Společnost byla založená v roce 1993 a od té doby prošla velkým vývojem a stále roste.

Reklama
Reklama
Obrázek ke článku České Radiokomunikace opět hledají nejlepší nápady pro internet věcí

České Radiokomunikace opět hledají nejlepší nápady pro internet věcí

České Radiokomunikace (CRA) pořádají druhý ročník CRA IoT Hackathonů. Zájemci z řad vývojářů a fanoušků moderních technologií mohou změřit své síly a během jediného dne sestrojit co nejzajímavější funkční prototyp zařízení, které bude komunikovat prostřednictvím sítě LoRa. CRA IoT Hackathony se letos uskuteční ve dvou fázích, na jaře a na podzim, v různých městech České republiky. Jarní běh se odstartuje 31. března v Brně a 7. dubna v Praze.

Obrázek ke článku Cloud computing je využíván stále intenzivněji

Cloud computing je využíván stále intenzivněji

Využívání cloud computingu nabývá na intenzitě. Jen v letošním roce vzroste podle analytiků trh se službami veřejného cloudu o 18 %, přičemž o téměř 37 % vzrostou služby typu IaaS. Růst o více než pětinu pak čeká služby poskytování softwaru formou služby, tedy SaaS. Aktuálním trendům v oblasti využívání cloudu se bude věnovat konference Cloud computing v praxi, která se koná 23. března. 2017 v pražském Kongresovém centru Vavruška na Karlově náměstí 5.

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ý