Comment puis-je exposer un service WCF dans un répertoire virtuel w / o authentification des formulaires?

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

Question

Mon groupe builds hébergé en interne des sites Web ASP.NET MVC avec des formes d'authentification.

Je voudrais héberger un service WCF dans le même répertoire virtuel comme un site Web ASP.NET MVC.

Ma question:

  

Comment puis-je faire librement le service WCF   accessible, qui est sans   formes d'authentification.

Ma situation actuelle est la suivante:

  • Je peux accéder aux .svc et voir les informations wsdl si je suis authentifie à travers des formes d'authentification avec un navigateur Web.
  • Mais lorsque je tente d'accéder au service WCF avec wcfTestClient.exe, je reçois l'erreur suivante:
  

Erreur: Impossible d'obtenir les métadonnées de    http: //localhost/Services/MyService.svc   Si cela est un ordinateur Windows (R) Communication   Fondation de service auquel vous avez   accès, s'il vous plaît vérifier que vous avez   publication des métadonnées permis à la   adresse spécifiée. Pour obtenir une aide permettant   l'édition de métadonnées, s'il vous plaît se référer à   la documentation MSDN    http://go.microsoft.com/fwlink/?LinkId=65455. WS-Metadata   Erreur Exchange

Était-ce utile?

La solution 3

Beaucoup

Merci à tous ceux qui ont essayé de répondre à cette question.

Après heures de résoudre ce problème, j'ai découvert qu'un module d'authentification personnalisé repoussait mon client tente d'obtenir les métadonnées. Qu'il suffise de dire que je devais contourner cette logique.

Oh - Et parcourant le code est sous-estimés . ;)

Autres conseils

Avez-vous un mex endpoint défini dans votre web.config pour le service? Le TestClient est à la recherche sans doute pour cela.

Si vous le faites, une autre possibilité est de désactiver l'autorisation sur le dossier des services. Je ne l'ai jamais testé, mais en théorie il peut fonctionner ...

Donc, si le site est localhost, mettre le service WCF dans localhost/services/myservice.svc ou similaires. Ensuite, ajoutez un web.config dans le dossier /services, qui remplace l'autorisation et permet à tous:

<configuration>
   <authorization>
      <allow users="*" />
   </authorization>
</configuration>

Si vous pouvez mettre votre fichier .svc dans un sous-dossier du répertoire virtuel, vous pouvez tirer parti de la chemin attribut dans l'authentification des formulaires pour permettre l'accès avec un niveau d'autorisation différent. Voici un tutoriel .

Je suppose que puisque vous utilisez l'authentification des formulaires que le répertoire virtuel est configuré pour l'accès anonyme dans IIS. Cela dit, si vous placez votre service WCF par exemple * Fichier .svc dans son propre répertoire, vous pouvez mettre à jour le principal fichier web.config et ajoutez une balise de localisation pour désactiver l'authentification des formulaires pour le répertoire contenant le service. Assurez-vous également disbale la sécurité via les paramètres de liaison de configuration WCF dans la section <system.servicemodel> du web.config qui doit être ajouté si pas déjà présent:

<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>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top