c# - 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”的错误页面。我在这里做错了什么?
解决方案
您需要转义所有参数(UrlEncode)。目前它没有转义,并且也有一大堆新行。
在您这样做之前,我建议您只需附加“hello world”参数并重新显示以确保您的重定向页面正常工作
推荐阅读
- c# - 在 Docker 上将 ASP.NET Core 2.2 中的默认时区更改为 24 小时制时间格式
- laravel - Laravel 中的大规模更新(Eloquent)
- ios - 如何快速将子视图塑造成它的超级视图?
- mysql - 当自动增量字段达到最大值时插入重复键更新失败且没有错误
- chat - 获取列表视图中的当前元素
- excel - 有没有更快的方法来执行这个循环 instr 函数?
- python - 为什么 Python 不从 Latin Extended-A 写入字符(写入文件时出现 UnicodeEncodeError)?
- javascript - 引导导航栏工具无法在小屏幕上工作
- python - 在 Python 中捕获的异常仍在冒泡
- python - 测试一个使用 sqlite 数据库的 Flask API