Global.asax中Application_Error中的问题

时间:2010-05-06 10:31:09

标签: asp.net

我的问题是异常处理中的User.Identity.Name或Request.Url.AbsoluteUri在向我发送异常电子邮件时为空。
这是Application_Code:

void Application_Error(object sender, EventArgs e) 
{
    Server.Transfer("~/errors/default.aspx");
}

这是default.aspx代码:

protected void Page_Load(object sender, EventArgs e)
{
    if (Server.GetLastError() == null)
        return;
    Exception ex = Server.GetLastError().GetBaseException();
    if (ex == null)
        return;

    string message = string.Format("User: ", User.Identity.Name);
    message += Environment.NewLine;
    message += string.Format("AbsoluteUri: ", Request.Url.AbsoluteUri);
    message += Environment.NewLine;
    message += string.Format("Form: ", Request.Form.ToString());
    message += Environment.NewLine;
    message += string.Format("QueryString: ", Request.QueryString.ToString());
    message += Environment.NewLine;

但我收到这样的电子邮件(这是没有完整异常内容的标题):

User: 
AbsoluteUri: 
Form: 
QueryString: 
Browser Capabilities:
Type = IE8
Name = IE
Version = 8.0
Platform = WinXP
Is Crawler = False
Supports Cookies = True
Supports JavaScript = 1.2

为什么用户名和请求网址是emty?
当我用重定向替换传输或我不使用两者时,这个问题是存在的。

1 个答案:

答案 0 :(得分:2)

您没有以正确的方式设置string.Format

试试这个。

string.Format("AbsoluteUri: {0}", Request.Url.AbsoluteUri);

我怎么建议将StringBuilder用于此代码。