0

如何获取生成异常的文件的名称。

前任。添加用户.aspx

try
{ 
    SaveUser(); 
}
catch (Exception ex)
{
    response.wrhite(ex.GETPAGE().toString());
}

return addUser.aspx;
4

4 回答 4

2

对于 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
}
于 2012-12-12T14:15:16.970 回答
1

不完全是文件,但classex.Source.

您可以使用 访问当前请求的 URL HttpContext.Current.Request.Url

于 2012-12-12T14:15:15.777 回答
1

不幸的是,该Exception课程没有关于您要查找的内容的任何信息。正如 Yahia 在这里指出的那样,您可以从异常中获取类名,但正如您所发现的,这对于查找 ASPX 路径并没有真正的帮助。

正如Graham 所说,最好的办法是使用Request.Url.ToString()异常处理程序内部的方法。由于您的代码是从与您的页面相关的 ASPX.cs 内部运行的,因此该对象可用于此。Request

于 2012-12-12T14:42:59.943 回答
0

这是一个丑陋的答案,我不推荐:

如果异常来自实际页面(而不是项目中其他位置的 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以获取页面。

于 2012-12-12T14:49:50.640 回答