RewritePath for 404响应?

时间:2011-03-12 20:14:49

标签: .net asp.net url-rewriting

我有一个重写模块,它匹配我的数据库中一个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;
}

有没有办法做到这一点?

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

1 个答案:

答案 0 :(得分:2)

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