首页 > 解决方案 > Response.Redirect 不发送字符串

问题描述

我在尝试在 MVC 中设置一般错误页面时遇到了一些问题。

我正在使用以下代码处理 Global.asax.cs 中的所有应用程序错误->

protected void Application_Error(object sender, EventArgs e)
{
    //if (Request.Url.ToString().StartsWith("http://localhost:"))
    //    return;
    string msg;
    Exception ex = Server.GetLastError().GetBaseException();
    StringBuilder sb = new StringBuilder();
    sb.AppendLine("Exception Found");
    sb.AppendLine("Timestamp: " + System.DateTime.Now.ToString());
    sb.AppendLine("Error in: " + Request.Url.ToString());
    sb.AppendLine("Browser Version: " + Request.UserAgent.ToString());
    sb.AppendLine("User IP: " + Request.UserHostAddress.ToString());
    sb.AppendLine("Error Message: " + ex.Message);
    sb.AppendLine("Stack Trace: " + ex.StackTrace);
    msg = sb.ToString();
    Server.ClearError();
    Response.Redirect(string.Format("~/Error/Error?w={0}", msg ));
}

我的问题是我没有得到重定向。创建错误时,我看到相同的页面 URL 和空白页面。

如果我删除“errorMsg”并添加一个简单的字符串,它会起作用,并使用所需的参数进行重定向。前任:

string test = "testme";
Response.Redirect(string.Format("~/Error/Error?w={0}", test));

这确实将我重定向到带有参数“testme”的错误页面。我在这里做错了什么?

标签: c#asp.net-mvc

解决方案


您需要转义所有参数(UrlEncode)。目前它没有转义,并且也有一大堆新行。

在您这样做之前,我建议您只需附加“hello world”参数并重新显示以确保您的重定向页面正常工作


推荐阅读