Wie kann ich w / o Formularauthentifizierung einen WCF-Dienst in einem virtuellen Verzeichnis aussetzen?
-
19-09-2019 - |
Frage
Meine Fraktion intern Builds mit formular Authentifizierung ASP.NET MVC-Websites gehostet werden.
Ich möchte einen WCF-Dienst in dem gleichen virtuellen Verzeichnis als ASP.NET MVC Website hosten.
Meine Frage:
Wie kann ich den WCF-Dienst frei zugänglich, das heißt ohne formular Authentifizierung.
Meine derzeitige Situation ist diese:
- Ich kann die SVC-Zugang und die WSDL Informationen sehen, wenn ich zum ersten Mal mit einem Web-Browser durch formular Authentifizierung authentifizieren.
- Aber wenn ich versuche, den WCF-Dienst mit wcfTestClient.exe zuzugreifen, erhalte ich folgende Fehlermeldung:
Fehler: nicht erhalten Metadaten aus http: //localhost/Services/MyService.svc Wenn dies eine Kommunikation Windows (R) Stiftung Dienst, zu dem Sie haben Zugang, überprüfen Sie bitte, dass Sie fähiges Metadaten-Publishing bei der angegebene Adresse. Für Hilfe ermöglichen Metadaten-Publishing finden Sie auf die MSDN-Dokumentation auf http://go.microsoft.com/fwlink/?LinkId=65455. WS-Metadaten Exchange-Fehler
Lösung 3
Vielen Dank an alle, die versuchten, diese Frage zu beantworten.
Nach dem Stunden , dieses Problem Fehlerbehebung, entdeckte ich, dass ein benutzerdefiniertes Authentifizierungsmodul wurde mein Mandant Ablehnung versucht, die Metadaten zu erhalten. Es genügt zu sagen, ich brauchte, um Route um diese Logik.
Oh - Und durch den Code Schritt ist sehr unterschätzt . ;)
Andere Tipps
Haben Sie eine mex endpoint
in Ihrer web.config für den Dienst definiert? Der Testclient sucht wahrscheinlich für diese.
Wenn Sie das tun, eine andere Möglichkeit besteht darin, Genehmigung für den Dienste-Ordner zu deaktivieren. Ich habe noch nie getestet, aber in der Theorie kann es funktionieren ...
Also, wenn Website localhost
ist, setzen Sie WCF-Dienst in localhost/services/myservice.svc
oder dergleichen. Dann fügen Sie eine web.config zum /services
Ordner, der die Genehmigung außer Kraft und ermöglicht es alle:
<configuration>
<authorization>
<allow users="*" />
</authorization>
</configuration>
Wenn Sie Ihre SVC-Datei in einen Unterordner des virtuellen Verzeichnisses setzen können, können Sie nutzen, um den Pfad Attribut in Formularauthentifizierung Zugriff mit einem anderen Berechtigungsstufe, um es zu aktivieren. Hier ist ein Tutorial .
Ich gehe davon aus, da Sie die Formularauthentifizierung verwenden, die das virtuelle Verzeichnis für den anonymen Zugriff in IIS konfiguriert ist. Mit dieser sagte, Wenn Sie Ihren WCF-Dienst platzieren z * SVC-Datei in einem eigenen Verzeichnis, können Sie die wichtigste web.config-Datei aktualisieren und einen Standort-Tag hinzufügen Formularauthentifizierung für das Verzeichnis deaktivieren Sie den Dienst enthält. Auch sicher sein, Sicherheit über die WCF-Konfiguration disbale Bindung Einstellungen im <system.servicemodel>
Abschnitt web.config, die hinzugefügt werden muss, wenn nicht bereits vorhanden ist:
<bindings>
<wsHttpBinding> <!-- one of many possible bindings -->
<binding name="...">
<security mode="None"> <-- allows anonymous access -->
<message clientCredentialType="None"/> <-- allows anonymous access -->
</security>
</binding>
</wsHttpBinding>
</bindings>