2011-03-12 71 views
2

我有一个重写模块,可以将请求的路径与我的db中的slug相匹配。如果它不匹配任何内容,我想返回一个404错误代码并将URL重写到我的404页面。RewritePath for 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)

回答

2

我认为你可以将你的app.Response.Status = "404 Not Found";代码隐藏代码为您PageNotFound而不是,而且会起作用。我只是在我的机器上做了一个快速测试。另一个选项是将默认的IIS错误页面更改为您的PageNotFound页面。我相信可以逐个设置。

+0

不正是我所希望的,但这个工程 – 2011-03-13 04:03:56