Response.Redirect不发送字符串

时间:2018-09-03 12:43:25

标签: c# asp.net-mvc

尝试在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”重定向到错误页面。我在这里做什么错了?

1 个答案:

答案 0 :(得分:3)

您需要转义所有参数(UrlEncode)。目前,它是未转义的,并且也有很多新行。

在执行此操作之前,建议您仅附加“ hello world”参数,然后重新显示该参数,以确保重定向页面正常工作