2011-03-12 72 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