Globa.asax

lunedì 25 luglio 2011 - 18.32
Tag Elenco Tags  VB.NET  |  .NET 3.5  |  Windows XP  |  Visual Studio Express  |  SQL Server 2005  |  Firefox  |  Javascript

FabioGiulia Profilo | Newbie

Buon giorno,
vorrei gestire gli errori utilizzando il file Global.asax.

nel file web.config imposto compilation debug="false"

Intercetto l'errore con Server.GetLastError.
Mi servirebbe il numero di riga che ha generato l'errore.

In fase di progettazione non ci sono problemi perchè setto il parametro debug a true, ma in fase di produzione lo setto a false.

grazie per l'aiuto.

Gluck74 Profilo | Guru

io per la mia soluzione, ho utilizzato il global.asax ed una pagina di errore custom.
Prelevando i dati in StackTrace, hai, nella prima riga di testo, il nome della funzione, il nome del file, il numero di riga.

Global.asax
protected void Application_Error(object sender, EventArgs e) { Exception ex = Server.GetLastError(); Server.ClearError(); Context.Items.Add("current_exception", ex.GetBaseException()); Server.Transfer("~/MyCustomErrorPage.aspx"); }

MyCustomErrorPage.aspx
<body> <form id="form1" runat="server"> <div> <dl> <dt>Sorgente dell'errore:</dt> <dd> <asp:Label ID="lblsource" runat="server" /> <br /> <br /> </dd> <dt>Descrizione:</dt> <dd> <asp:Label ID="lbldescription" runat="server" /> </dd> </dl> </div> </form> </body>

MyCustomErrorPage.aspx.cs
protected void Page_Load(object sender, EventArgs e) { Exception ex = Context.Items["current_exception"] as Exception; if (ex != null) { lblsource.Text = ex.Source; lbldescription.Text = ex.StackTrace.Replace("\r\n", "<br />"); } }

Risultato:
Sorgente dell'errore:
WebApp_ProveForum


Descrizione:
in WebApp_ProveForum._GridViewWithFilter.btnOrdina_Click(Object sender, EventArgs e) in E:\Codice\ASP.NET\WebApp_ProveForum\WebApp_ProveForum\Pagine\GridViewWithFilter.aspx.cs:riga 55
in System.Web.UI.WebControls.Button.OnClick(EventArgs e)
in System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)
in System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
in System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
in System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
in System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
____________
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.

FabioGiulia Profilo | Newbie

Prima di tutto grazie per la risposta.

Anche io utilizzo lo stesso sistema, ma nel web.config se imposto debug=false, Server.GetLastError non mi restituisce il numero di riga.

Dove sbaglio?

grazie ancora

Gluck74 Profilo | Guru

a no, scusa, me era sfuggito.....
mi sa proprio che senza info di debug il numero di riga non lo puoi prendere



____________
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.

Gluck74 Profilo | Guru

a no, scusa, me era sfuggito.....
mi sa proprio che senza info di debug il numero di riga non lo puoi prendere



____________
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5