抛出错误401 Unauthorized所以Web.config显示适当的页面

时间:2015-06-08 17:43:24

标签: c# asp.net

我正在进行ajax调用,如果用户不是管理员,我想抛出401类型的错误 - 未经授权,然后让web.config将用户重定向到我的访问被拒绝页面:

    <customErrors mode="On">
  <error statusCode="500" redirect="~/InternalError.html"/>
  <error statusCode="401" redirect="~/AccessDenied.aspx"/>
</customErrors>

如您所见,我有一个类型500 - 内部服务器错误来处理其他错误。但是当我运行这段代码时:

     if (user.Type != AppUser.UserType.SystemAdministrator)
            {
                throw new HttpException((int)HttpStatusCode.Unauthorized, "Unauthorized");
            }

web.config认为抛出500并显示InternalError.htm而不是AccessDenied.aspx。如何告诉我的ASP.NET应用程序抛出401而不是500,这样会显示正确的错误页面?

这不是MVC。

1 个答案:

答案 0 :(得分:1)

改为设置Response.StatusCode,它将触发重定向。

或者,您可以使用以下内容:

throw new HttpException(401, "Unauthorized");