Skip to main content

Posts

Showing posts with the label error handling

DB error not handled by the web application

Incercam astazi sa caut care este cea mai buna ruta pentru a merge din Cluj-Napoca in Arad, iar domnul Google m-a dus la urmatoarea adresa url: http://mersul-trenurilor.infoturism.ro/mersul_trenurilor_arad_cluj-napoca.php Pagina returnata avea urmatorul continut: SELECT DISTINCT traseu.id, traseu.ora, traseu.id_tren, traseu.id_statie, gari.nume FROM traseu, gari WHERE traseu.id_statie = gari.id AND id_tren IN (536,534,1834,1843,1766) ORDER BY traseu.ordine, traseu.id1054 - Unknown column 'traseu.ora' in 'field list' Rezultatul returnat mi s-a parut destul de dragut, mai ales ultima parte a sa. In mod normal ar fi trebuit sa vedem o pagina de eroare frumoasa, dar in schimb apare un SELECT, care ne expune o mica parte din baza de date. O persoana cu putina imaginatie poate ar putea sa execute o comanda SQL precum un DELETE. In cazul in care lucrati la o aplicatie de orice fel (in special web) nu uitati sa tratiti mesajele de eroare intr-un mod corespunzator, iar la un end...

MVC 3 - Handling 404 errors

Intr-un post anterior am promis ca o sa revin cu cativa pasi ce trebuie facuti pentru a putea face handling corect la o aplicatie ASP.NET MVC 3. Mai jos o sa gasiti cei 3 pasi care trebuie facuti pentru a face handling la erorile de tip 404 cat mai bine, fara sa avem surprize neplacute cand aplicatia este deja in productie. Exista mai multe variante. Varianta aleasa de mine nu necesita existenta sau modificarea unui base controller. 1. Pentru toate erorile care apar in sistem avem nevoie de un loc comun Toate erorile trebuie sa fie controlate dintr-un loc comun. In cazul in care vrem sa vedem la ce erori se face handling sau care este modalitatea prin care se face handling, ca sa nu cautam prin controale, cel mai usor este sa ne facem un controller care se ocupa doar cu acest lucru. public class ErrorController { public ActionResult Http404(string url) { Response.StatusCode = (int)HttpStatusCode.NotFound; var model = new ErrorViewModel(); model.Reque...

MVC 3 - Error handling

Cat de mult va place ecranul galben intr-o aplicatie web? Cred ca e la fel de faimos ca si ecranul albastru din Windows. Mai este numit si YSOD – Yellow Screen Of Death. Acest ecran nu ar trebuii sa apara niciodata in productie. Mai jos o sa vorbim despre doua modalitati cum putem sa evitam acest ecran. MVC 3 ne aduce o functionalitate build-in pentru handling la erori. Atributul HandleErrorAttribute se ocupa de acest lucru pentru noi si face o treaba foarte bine atata timp cat este folosit corespunzator. Putem sa il folosim in doua metode. O metoda este sa decoram controlerele sau actiniile cu acest atribut. In acest mod, orice eroare care apare in controlerul/actiunea noastra o sa fie prinsa de catre MVC 3. O alta variant este sa adaugam in lista de GlobalFilter si atributul nostru – acest lucru se face in Global.asax.cs - Application_Start . In acest fel nu are importanta de unde vine eroare, o sa fie facut handle la eroare de catre MVC 3. [HandleError] public class HelpCon...