👋 Nový obsah na borekb.cz

Info Tento blog je v "read-only módu" a nový obsah již nebude přibývat. O vývoji píšu na DevBlog.

Vážná chyba v ASP.NET 2.0

U Scotta Mitchela jsem se právě dozvěděl, že ASP.NET 2.0 obsahuje vážnou chybu v často používaných controlech GridView, DetailsView a FormView.

Podmínky jsou následující:

  1. ViewState je vypnuté (EnableViewState = false)
  2. Na stránku přistupují dva uživatelé a oba vykonávají mazání nebo editaci záznamu

Problémová situace vypadá následovně:

  1. Alice i Bob přistoupí na stránku, která zobrazuje záznamy 1 až 10.
  2. Alice smaže záznam 1, Bob si nadále prohlíží původní načtenou stránku (všech 10 záznamů)
  3. Bob se rozhodne smazat záznam 1 – ten už je mezitím smazaný Alicí a díky chybě ASP.NET dojde ke smazání záznamu 2.

Tato chyba je tedy velmi kritická, protože jednak může vést ke smazání nezamýšleného záznamu, a zadruhé má Bob mnoho času na to, aby chybu vyvolal (nemusí se s Alicí trefit do několika milisekund, jak tomu u podobných problémů bývá).

Řešením je povolit ViewState nebo si trochu pohrát s událostmi RowCommand a Deleting (podrobnosti viz Scottův článek)

Je to první vážná chyba, se kterou jsem se u ASP.NET setkal, a nutno říct, že se jedná o opravdu těžký kalibr. Upozorněte, prosím, své známé ASP.NET vývojáře!

Zařazeno do kategorií |
Anonym (Pá, 2006-11-24 21:54):

Zajímavý článek.

Komentáře jsou uzavřeny (blog je v read-only módu). Pokud mě chcete kontaktovat, můžete mailem.