我有这段代码:
using System.Configuration;
void Application_Error(object sender, EventArgs e)
{
Exception ex = Server.GetLastError().GetBaseException();
string ErrorMessage = ex.Message;
string StackTrace = ex.StackTrace;
string ExceptionType = ex.GetType().FullName;
string UserId = Getloggedinuser();
string WebErrorSendEmail =
ConfigurationManager.AppSettings["WebErrorSendEmail"];
// save the exception in DB
LogStuffInDbAndSendEmailFromDb();
}
这是(大部分)我的代码。 在一小部分情况下,我没有得到足够的信息。我不知道异常起源于哪个页面。
如何获取与异常源自的页面相关的任何信息?
以下是最短消息的示例:
Base-64字符数组的长度无效。
at System.Convert.FromBase64String(String s)at System.Web.UI.ObjectStateFormatter.Deserialize(String inputString)at System.Web.UI.ObjectStateFormatter.System.Web.UI.IStateFormatter.Deserialize(字符串 serializedState)at System.Web.UI.Util.DeserializeWithAssert(IStateFormatter formatter, String serializedState)at System.Web.UI.HiddenFieldPageStatePersister.Load()
答案 0 :(得分:24)
您可以像下面这样获取当前请求的网址和页面:
void Application_Error(object sender, EventArgs e)
{
// Code that runs when an unhandled error occurs
if (HttpContext.Current != null)
{
var url = HttpContext.Current.Request.Url;
var page = HttpContext.Current.Handler as System.Web.UI.Page;
}
}