Serviço Web do ASP.NET dentro do Aplicativo de Autenticação de Formulários
Eu tenho um aplicativo ASP.NET existente que implementa a Autenticação de formulários em todo o site. O aplicativo é implementado em várias instâncias (por exemplo, customer1, customer2, test, dev, etc ...), com um banco de dados separado por instância. SSL está em jogo. A configuração da instância é feita por meio de um arquivo de configuração XML.
Eu tenho um novo requisito para permitir upload / download de determinados dados, que gostaria de implementar como um serviço da web público.
Meu pensamento inicial aqui foi desativar seletivamente a autenticação de formulários para um subdiretório do aplicativo (por exemplo, ~ / Services) e, em seguida, fazer a autenticação por meio de um cabeçalho SOAP ou similar.
No entanto, não estou encontrando uma maneira de desativar seletivamente a autenticação de formulários.
Pergunta: Existe uma maneira de fazer isso? Eu tentei a tag <location> na configuração da web sem sucesso.
Se não, quais são as suas recomendações sobre como configurar isso? Eu posso pensar nas seguintes opções:
1) Crie um novo projeto "Serviços" na minha solução e, em seguida, configure um aplicativo IIS ASP.NET separado nesse diretório em cada instância. (Pro: acesso fácil à configuração da instância, que pode ser necessária no futuro. Con: sobrecarga de configuração para cada instância relevante).
2) Crie uma solução "Serviços" separada que faça referência aos assemblies necessários da solução de aplicativo e hospede-a como um aplicativo ASP.NET separado. Em seguida, pesquise a cadeia de conexão db com base no UserName fornecido no cabeçalho SOAP. (Pro: aplicativo único para configurar no IIS. Con: Não é fácil acessar a configuração da instância.)
3) ??
Esclarecimento: eu vi a resposta aqui:Substituir a autenticação de formulários ASP.NET para uma única página, mas o uso de uma marca de localização não está ajudando (as solicitações para o serviço da Web ainda são redirecionadas). As seções relevantes no meu web.config são assim:
<system.web>
<authentication mode="Forms">
<forms loginUrl="Login.aspx"/>
</authentication>
<authorization>
<deny users="?"/>
<allow users="*"/>
</authorization>
</system.web>
<location path="~/Services/MyService.asmx">
<system.web>
<authentication mode="None" />
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>