ASP.NET-Webdienst in der Formularauthentifizierungsanwendung

Ich habe eine vorhandene ASP.NET-Anwendung, die die Formularauthentifizierung standortweit implementiert. Die Anwendung wird in mehreren Instanzen (z. B. Kunde1, Kunde2, Test, Entwickler usw.) mit einer separaten Datenbank pro Instanz bereitgestellt. SSL ist im Spiel. Die Instanzkonfiguration erfolgt über eine XML-Konfigurationsdatei.

Ich habe eine neue Anforderung, das Hochladen / Herunterladen bestimmter Daten zuzulassen, die ich als öffentlichen Webdienst implementieren möchte.

Mein anfänglicher Gedanke hier war, die Formularauthentifizierung für ein Unterverzeichnis der Anwendung (z. B. ~ / Services) selektiv zu deaktivieren und dann die Authentifizierung über einen SOAP-Header oder Ähnliches durchzuführen.

Ich finde jedoch keine Möglichkeit, die Formularauthentifizierung selektiv zu deaktivieren.

Frage: Gibt es eine Möglichkeit, dies zu tun? Ich habe das Tag <location> in der Webkonfiguration ohne Erfolg versucht.

Wenn nicht, was sind Ihre Empfehlungen für die Einrichtung? Ich kann mir folgende Möglichkeiten vorstellen:

1) Erstellen Sie in meiner Projektmappe ein neues "Dienste" -Projekt und konfigurieren Sie dann in jeder Instanz eine separate IIS ASP.NET-Anwendung in diesem Verzeichnis. (Pro: einfacher Zugriff auf die Instanzkonfiguration, die möglicherweise in Zukunft benötigt wird. Con: Konfigurationsaufwand für jede relevante Instanz).

2) Erstellen Sie eine separate "Services" -Lösung, die auf erforderliche Assemblys aus der Anwendungslösung verweist, und hosten Sie sie als separate ASP.NET-Anwendung. Suchen Sie dann die DB-Verbindungszeichenfolge basierend auf dem in SOAP-Header angegebenen Benutzernamen. (Pro: Einzelanwendung zum Konfigurieren in IIS. Con: Kein einfacher Zugriff auf die Instanzkonfiguration.)

3) ??

Klarstellung: Ich habe die Antwort hier gesehen:Überschreiben Sie die ASP.NET-Formularauthentifizierung für eine einzelne SeiteDie Verwendung eines Standort-Tags ist jedoch nicht hilfreich (Anforderungen für den Webdienst werden weiterhin umgeleitet). Die relevanten Abschnitte in meiner web.config sehen folgendermaßen aus:

<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>

Antworten auf die Frage(3)

Ihre Antwort auf die Frage