Веб-служба ASP.NET внутри приложения проверки подлинности с помощью форм
У меня есть приложение ASP.NET, которое реализует проверку подлинности с помощью форм для всего сайта. Приложение развертывается в нескольких экземплярах (например, customer1, customer2, test, dev и т. Д.) С отдельной базой данных для каждого экземпляра. SSL в игре. Настройка экземпляра осуществляется через файл конфигурации XML.
У меня есть новое требование разрешить загрузку / выгрузку определенных данных, которое я хотел бы реализовать как общедоступный веб-сервис.
Моя первоначальная мысль заключалась в том, чтобы выборочно отключить проверку подлинности с помощью форм для подкаталога приложения (например, ~ / Services), а затем выполнить проверку подлинности через заголовок SOAP или аналогичный.
Однако я не нахожу способ выборочно отключать аутентификацию форм.
Вопрос: есть ли способ сделать это? Я пробовал & lt; местоположение & gt; тег в веб-конфигурации безрезультатно
Если нет, каковы ваши рекомендации по настройке? Я могу думать о следующих вариантах:
1) Создайте новую «Службу». проект в моем решении, а затем настроить отдельное приложение IIS ASP.NET в этом каталоге в каждом экземпляре. (Pro: легкий доступ к конфигурации экземпляра, который может потребоваться в будущем. Con: нагрузка на конфигурацию для каждого соответствующего экземпляра).
2) Создайте отдельную «Службу». решение, которое ссылается на необходимые сборки из решения приложения и размещает его как отдельное приложение ASP.NET. Затем найдите строку подключения к базе данных на основе имени пользователя, указанного в заголовке SOAP. (Pro: отдельное приложение для настройки в IIS. Con: нет простого доступа к конфигурации экземпляра.)
3) ??
Пояснение: я видел ответ здесь:Переопределить проверку подлинности форм ASP.NET для одной страницы, но использование тега местоположения не помогает (запросы на веб-службу все еще перенаправляются). Соответствующие разделы в моем web.config выглядят так:
<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>