【问题标题】:RewritePath for 404 response?404响应的重写路径?
【发布时间】:2011-03-13 09:19:54
【问题描述】:

我有一个重写模块,它与我的数据库中的 slug 的请求路径相匹配。如果它不匹配任何内容,我想返回 404 错误代码并将 url 重写到我的 404 页面。

问题是,如果我将响应状态设置为 404,则不会发生重写,并且 IIS 返回它的默认 404 错误页面,而不是我正在重写的页面中的内容。

var slug = db.Slugs.FirstOrDefault(x => SqlMethods.Like(x.SlugValue, app.Request.Path));
if (slug == null)
{
    app.Response.Status = "404 Not Found";
    app.Context.RewritePath(Settings.NotFoundPage, true);
    return;
}

有什么办法吗?

(如果我注释掉 Status 并将 URL 重写为我的 NotFoundPage 它可以正常工作,但返回码不是 404)

【问题讨论】:

    标签: .net asp.net url-rewriting


    【解决方案1】:

    我认为您可以将 app.Response.Status = "404 Not Found"; 代码移动到 PageNotFound 页面的代码隐藏中,这样就可以了。我刚刚在我的机器上做了一个快速测试。另一种选择是将默认的 IIS 错误页面更改为您的 PageNotFound 页面。我相信可以逐个站点设置。

    【讨论】:

      猜你喜欢
      • 2019-08-27
      • 2018-11-17
      • 2012-07-03
      • 2017-11-22
      • 1970-01-01
      • 2011-07-18
      • 2021-09-18
      • 2021-05-20
      • 1970-01-01
      相关资源
      最近更新 更多