ASP.Net将401转换为302错误代码

时间:2011-04-05 18:04:28

标签: asp.net

我有一个自定义处理程序,在某些情况下,我想向用户代理指出它们未被授权(Http错误代码401)

        if (!IsAuthorized(context))
        {
            context.Response.StatusCode = 401;
            context.Response.End();
            return;
        }

当我访问我的处理程序时,我实际上获得了302并重定向到表单身份验证页面。有没有办法阻止这种情况发生?

2 个答案:

答案 0 :(得分:4)

您的方案听起来像是“拒绝访问”而不是“未经授权”。你能使用403作为“拒绝访问”的HTTP状态代码吗?

http://en.wikipedia.org/wiki/List_of_HTTP_status_codes

答案 1 :(得分:1)

听起来您已为该页面启用了身份验证。如果是这种情况,那么您的应用程序在切换到自定义处理程序之前调用身份验证。这就是你看到登录页面的原因。

在处理程序接收调用之前,将填充处理程序中的isAuthorized。您将需要使用模块并挂钩进入身份验证生命周期事件。请参阅Asp.Net Life Cycle