Веб-служба 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>

Ответы на вопрос(3)

Ваш ответ на вопрос