如何获取生成异常的文件的名称。
前任。添加用户.aspx
try
{
SaveUser();
}
catch (Exception ex)
{
response.wrhite(ex.GETPAGE().toString());
}
return addUser.aspx;
对于 ASP.NET 中的 C#,您可以在 Global.asax 中的 Application_Error 事件期间通过 Request 对象获取它。
protected void Application_Error(object sender, EventArgs e)
{
// some code here
String url = Request.Url.ToString()
// some more code here
}
不完全是文件,但class
在ex.Source
.
您可以使用 访问当前请求的 URL HttpContext.Current.Request.Url
。
不幸的是,该Exception
课程没有关于您要查找的内容的任何信息。正如 Yahia 在这里指出的那样,您可以从异常中获取类名,但正如您所发现的,这对于查找 ASPX 路径并没有真正的帮助。
正如Graham 所说,最好的办法是使用Request.Url.ToString()
异常处理程序内部的方法。由于您的代码是从与您的页面相关的 ASPX.cs 内部运行的,因此该对象可用于此。Request
这是一个丑陋的答案,我不推荐:
如果异常来自实际页面(而不是项目中其他位置的 DLL 或其他类),则 StaceTrace 具有页面文件名。这是在本地为我抛出的一个简单页面和方法的跟踪:
at WebApp2.ExceptionPage.BlowUp() in C:\Users\gpeel\Desktop\Documents\Visual Studio 2010\Projects\GPTestBed\WebApp2\Exception.aspx.cs:line 27 at WebApp2.ExceptionPage.Page_Load(Object sender, EventArgs e) in C:\Users\gpeel\Desktop\Documents\Visual Studio 2010\Projects\GPTestBed\WebApp2\Exception.aspx.cs:line 16
您可以通过查找短语“.aspx.cs”的第一个实例来梳理出该文件名,然后在字符串中向左移动直到找到第一个“\”字符。这会给你上面的“Exception.aspx.cs”。
我强烈建议您重新编写代码以处理 Application_Error 中的 Exception 对象,即使是 global.asax 也是如此。在该事件中调用Server.GetLastError().GetBaseException()以获取引发的异常,并调用Request.Url以获取页面。