我想知道是否可以在页面内抛出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();
}
答案 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();
}
...