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.