我有一个重写模块,它匹配我的数据库中一个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)
答案 0 :(得分:2)
我认为您可以将app.Response.Status = "404 Not Found";
代码转移到PageNotFound页面的代码隐藏代码,这样就可以了。我刚刚对我的机器进行了快速测试。另一个选项是将默认的IIS错误页面更改为PageNotFound页面。我相信可以逐个站点设置。