12

我创建了一个 Asp.net MVC 应用程序。现在需要 404 处理。

已更新 global.asax 并根据状态码显示 404 页面。还在 web.config 中添加了 customErrors 属性。它工作正常。

现在,当任何不符合我们要求的东西时,我想以编程方式重定向到 404。

IE

if(!valid) 
{
    return RedirectToAction("Index", "Page404");
}

它工作正常,但有两种状态,一种是 301,然后是 404。那么我该如何防止 301?我只需要404。

我怎样才能做到这一点?

4

3 回答 3

45

只需从您的操作中返回:

return HttpNotFound();
于 2012-05-22T13:10:25.827 回答
3

在您的web.config中,添加:

<customErrors mode="On" >
       <error statusCode="404" redirect="/404.shtml" />
</customErrors>

当找不到请求的资源时,这将重定向到 404.shtml 页面。

注意:对于这种情况,无需以编程方式重定向用户。


编辑: 我从字面上建议:

if (Context.Response.StatusCode == 404) {
  // handle this
}
于 2012-05-22T13:10:40.817 回答
2

只需在状态码中抛出 404 即可:

Response.StatusCode = (int)System.Net.HttpStatusCode.NotFound
于 2012-05-22T13:10:02.097 回答