Wie kann ich w / o Formularauthentifizierung einen WCF-Dienst in einem virtuellen Verzeichnis aussetzen?

StackOverflow https://stackoverflow.com/questions/2223033

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

War es hilfreich?

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>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top