Autenticação de formulários: desative o redirecionamento para a página de login

Eu tenho um aplicativo que usa autenticação de formulários do ASP.NET. Na maioria das vezes, está funcionando muito bem, mas estou tentando adicionar suporte para uma API simples por meio de um arquivo .ashx. Quero que o arquivo ashx tenha autenticação opcional (ou seja, se você não fornecer um cabeçalho de autenticação, ele funcionará anonimamente). Mas, dependendo do que você faz, quero exigir autenticação sob certas condições.

Eu pensei que seria uma questão simples de responder com o código de status 401 se a autenticação necessária não fosse fornecida, mas parece que o módulo Forms Authentcation está interceptando isso e respondendo com um redirecionamento para a página de login. O que eu quero dizer é, se meuProcessRequest O método se parece com isso:

public void ProcessRequest(HttpContext context)
{
    Response.StatusCode = 401;
    Response.StatusDescription = "Authentication required";
}

Então, em vez de obter um código de erro 401 no cliente, como eu espero, estouna realidade recebendo um redirecionamento 302 para a página de login.

Para o tráfego HTTP nornal, posso ver como isso seria útil, mas para minha página de API, quero que o 401 passe sem modificação, para que o chamador do lado do cliente possa responder a ele de forma programática.

Existe alguma maneira de fazer isso?

questionAnswers(11)

yourAnswerToTheQuestion