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

时间:2012-12-12 14:08:44

标签: c# asp.net exception

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

离。 addUser.aspx

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

return addUser.aspx;

4 个答案:

答案 0 :(得分:1)

不完全是文件,ex.Source可以使用class

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

答案 1 :(得分:1)

对于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
}

答案 2 :(得分:1)

不幸的是,Exception课程没有关于您要找的内容的任何信息。 As Yahia notes here,您可以从Exception获取类名,但正如您所发现的那样,这对查找ASPX路径没有帮助。

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

答案 3 :(得分:0)

这是一个UGLY-ASS答案,我不建议这样做:

StaceTrace具有页面文件名,如果异常来自实际页面(而不是项目中其他地方的DLL或其他类)。以下是本地抛出的简单页面和方法的痕迹:

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 来获取页面。