可能在ASP.Net页面中抛出404错误?

时间:2011-02-11 22:05:45

标签: asp.net http exception

我想知道是否可以在页面内抛出404错误(代码隐藏)?或者甚至可能抛出任何其他类型的错误页面,如408(超时)或401(需要验证)?

注意:我不仅希望页面返回404的状态代码,我希望它使用ASP.Net(或我的CustomErrors)404错误页面。

背后的代码中有类似的东西:

if(id>10){ //if id is greater than 10, then it doesn't exist here
  throw 404Error();
}

3 个答案:

答案 0 :(得分:33)

您可以抛出HttpException并设置相应的状态代码:

throw new HttpException(404, "Not found");

它也可以与其他状态代码一起使用。只是关于401的评论:你可能知道ASP.NET MVC何时检测到这段代码,它会自动将你重定向到登录页面,获得401状态代码的自定义错误页面可能是一个真正的PITA来实现。

答案 1 :(得分:19)

更好的方法是:

'Throws a 404 Not found:
Response.Clear()
Response.StatusCode = 404
Response.End()

在web.config中使用自定义错误页面时,无需抛出异常,上述工作效果更好

答案 2 :(得分:0)

关于asp.net Web表单中的页面加载,需要一些小的解决方法。

protected void Page_Load(object sender, EventArgs e)
        {


            HttpNotFound();
        }

        private void HttpNotFound()
        {
            Response.Clear();
            Response.StatusCode = 404;
            Response.End();
            HttpContext.Current.ApplicationInstance.CompleteRequest();           
        }

...