WebElektronika

A HttpRequestValidationException lekezelése

person access_time 2015.05.08.
Az objektumorientált nyelvek tanulásánál hamar előkerül a kivételkezelés. A try-catch blokk használata egyszerű és kényelmes. Na de mi van akkor, amikor olyan kivételdobás történik, amely a megszokott try-catch blokk használatával nem kezelhető le? Ezért megnézzük most a HttpRequestValidationException kivételt.


Indítsuk el a Visual Studio 2012-t és válasszunk egy üres ASP.NET-es projektet. Ekkor a projekt csak a Web.config file-ból fog állni (1. ábra).

kep
1. ábra   A Solution Explorer
 

Vegyünk fel egy új item-et, egy "Default.aspx"-et (2. ábra). Nincs a projektben sitemaster oldal, ezért ez az aspx-es oldal "üres" lesz.

kep
2. ábra   Módosult Solution Explorer
 

Vegyünk fel erre az oldalra egy Button-t és egy TextBox-ot. Ezt megtehetjük a ToolBox használatával, de akár a Source oldalból is.

<body>
    <form id="form1" runat="server">
    <div>
        <p>
            <asp:TextBox ID="TextBox1" runat="server" />
        </p>
        <p>
            <asp:Button ID="Button1" runat="server" Text="Button" />
        </p>
    </div>
    </form>
</body>

 

Indítsuk el a projektünket debug módban, a következő kép fogad bennünket (3. ábra).

kep
3. ábra   Localhost
 

Írjuk be a <script> szót a textbox-ba, majd kattintsunk a nyomógombra. Biztonsági okok miatt (hogy script-et ne tudjunk futtatni) kivételdobás történik (4. ábra).

kep
4. ábra   A HttpRequestValidationException eredménye
 

Hogyan lehet ezt a kivételdobást lekezelni, amikor a try-catch blokk nem használható?

A megoldás a Global.asax file-ban keresendő, ahol különböző események találhatók. Amikor elindul az alkalmazásunk, amikor létrejön egy session, akkor egy-egy esemény kerül végrehajtásra. De külön esemény van a hibakezelésre is.

Adjuk a projektünkhöz a Global.asax file-t, és az Application_Error eseményt egészítsük ki a következő (5. ábra) szerint. A "pelda" nevű anonim típusba lekérjük a legutolsó hibát, majd töröljük a képernyőt. Ezután kiírunk a képernyőre egy egyszerű HTML kódot.

kep
5. ábra   Az Application_Error esemény
 

Futtassuk újra a projektünket és ismét írjuk be a textbox-ba a "<script>"-et. Most már nem a kivételdobás eredményét látjuk, hanem az üzenetet, amelyet az Application_Error eseménybe írtuk be (6. ábra).

kep
6. ábra   Az Application_Error esemény futási eredménye