我有一个使用 ASP.NET 窗体身份验证的应用程序。在大多数情况下,它工作得很好,但是我试图通过一个。Ashx 文件。我希望 ashx 文件具有可选的身份验证(也就是说,如果您不提供身份验证头,那么它只能匿名工作)。但是,根据您所做的工作,我希望在某些条件下要求身份验证。
我认为,如果没有提供所需的身份验证,那么使用状态码401进行响应是一件简单的事情,但是看起来表单身份验证模块正在拦截这个身份验证,并以重定向到登录页面的方式进行响应。我的意思是,如果我的 ProcessRequest方法是这样的:
public void ProcessRequest(HttpContext context)
{
Response.StatusCode = 401;
Response.StatusDescription = "Authentication required";
}
然后不像我期望的那样在客户机上得到401错误代码,而是 事实上得到一个302重定向到登录页面。
对于普通的 HTTP 流量,我可以看到这是多么有用,但是对于我的 API 页面,我希望401未经修改地通过,以便客户端调用者能够以编程方式响应它。
有什么办法吗?