【问题标题】:Stop Server.TransferRequest from using the query string of the current request停止 Server.TransferRequest 使用当前请求的查询字符串
【发布时间】:2017-10-06 23:22:14
【问题描述】:

Server.TransferRequest 的文档包含以下注释:

如果 path 参数指定了一个查询字符串,它将被用作新的查询字符串。如果不包含查询字符串,则请求的查询字符串将被重复使用。

如何将带有查询字符串的请求转移到没有查询字符串的路径?

【问题讨论】:

  • 退后一步,解释一下您的潜在业务问题。
  • Server.TransferRequest 是 ASP.NET 的工件,如果您使用 MVC,则完全没有必要。在 MVC 中您需要做的就是将请求准确地路由到它需要去的地方。但正如 mjwillis 所指出的,如果您解释您要解决的业务问题,将会有所帮助。如果您尝试更改浏览器的 URL,那么您只需要重定向即可。
  • @mjwills @NightOwl888 这与问题无关,但这是我的业务问题。发生错误时,我需要渲染上一个(请求)页面,并在顶部添加一个警告框。我的 Web.config 配置为在出错时执行路径 /error。我的错误处理程序会检查引用者并在可能的情况下传输请求。
  • IIS 的错误处理会在查询字符串中附加未转义的数据 (see this)。我想在传输请求之前删除这个无效的查询字符串。
  • 你真的需要首先重定向到错误页面吗?一个潜在的解决方案是创建一个全局过滤器来捕获错误发生的时间,并在 ViewBag 中填充您想要在警报框中显示的内容(无需导航到错误页面)。当然,您会错过在 ASP.NET 执行之前发生的任何错误,但这些错误对您的用例有多重要?

标签: c# asp.net .net asp.net-mvc iis


【解决方案1】:

我最终改用HttpContext.RewritePath。使用空的 queryString ("") 来防止它使用当前请求的查询字符串。

【讨论】:

    猜你喜欢
    • 2015-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-06
    • 2021-07-02
    • 1970-01-01
    • 2020-12-02
    相关资源
    最近更新 更多