我有一个使用ASP.NET Forms身份验证的应用程序.在大多数情况下,它工作得很好,但我试图通过.ashx文件添加对简单API的支持.我希望ashx文件具有可选的身份验证(即,如果您不提供身份验证标头,那么它只是匿名工作).但是,根据您的操作,我希望在某些条件下要求身份验证.
如果没有提供所需的身份验证,我认为用状态代码401进行响应将是一件简单的事情,但似乎Forms Authentcation模块正在拦截它并通过重定向到登录页面进行响应.我的意思是,如果我的ProcessRequest方法看起来像这样:
public void ProcessRequest(HttpContext context)
{
Response.StatusCode = 401;
Response.StatusDescription = "Authentication required";
}
Run Code Online (Sandbox Code Playgroud)
然后,而不是像我期望的那样在客户端上获得401错误代码,我实际上正在获得302重定向到登录页面.
对于nornal HTTP流量,我可以看到它是如何有用的,但是对于我的API页面,我希望401经过不加修改,以便客户端调用者可以以编程方式响应它.
有没有办法做到这一点?
MSDN明确表示,它应该做401重定向,但我发现在FF 302重定向,这也是造成在AJAX请求问题,因为返回的状态是200(从重定向的页面).
http://msdn.microsoft.com/en-us/library/system.web.mvc.authorizeattribute.aspx
我发现其他人有同样的问题:http: //blog.nvise.com/?p = 26
还有其他解决办法吗?