2011-07-22 6 views
0

Quelqu'un peut-il me dire ce que je fais mal ci-dessous? Je me bats avec ça depuis des heures et je crois que j'ai raison, mais il me manque quelque chose. Fondamentalement, pour chaque service que j'ai, je voudrais avoir des adresses. Ces services doivent être hébergés dans IIS. J'ai testé avec IIS Express. Mon attente est que j'accéderais aux services de /AuthService.svc/soap et /AuthService.svc/json, mais cela ne semble pas fonctionner. Ci-dessous la configuration que j'utilise.L'adresse du point de terminaison WCF ne fonctionne pas

<system.serviceModel> 
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true" /> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="DefaultServiceBehavior"> 
      <serviceMetadata httpGetEnabled="true" /> 
     </behavior> 
     <behavior name=""> 
      <serviceMetadata httpGetEnabled="true" /> 
     </behavior> 
     </serviceBehaviors> 
     <endpointBehaviors> 
     <behavior name="jsonBehavior"> 
      <webHttp /> 
     </behavior> 
     </endpointBehaviors> 
    </behaviors> 
    <bindings> 
     <basicHttpBinding> 
     <binding name="SecureBinding" allowCookies="true" maxReceivedMessageSize="67108864"> 
      <readerQuotas maxArrayLength="67108864"/> 
      <security mode="Transport"/> 
     </binding> 
     </basicHttpBinding> 
     <webHttpBinding> 
     <binding name="SecureBinding" allowCookies="true" maxReceivedMessageSize="67108864"> 
      <readerQuotas maxArrayLength="67108864"/> 
      <security mode="Transport"/> 
     </binding> 
     </webHttpBinding> 
     </bindings> 
     <services> 
     <service name="AuthService" behaviorConfiguration="DefaultServiceBehavior"> 
      <endpoint address="soap" 
        binding="basicHttpBinding" 
        bindingConfiguration="SecureBinding" 
        contract="FormsAuthenticatingServices.Interfaces.IAuthService" /> 
      <endpoint address="json" 
        binding="webHttpBinding" 
        bindingConfiguration="SecureBinding" 
        behaviorConfiguration="jsonBehavior" 
        contract="FormsAuthenticatingServices.Interfaces.IAuthService" /> 
     </service> 
     <service name="DataService" behaviorConfiguration="DefaultServiceBehavior"> 
      <endpoint address="soap" 
        binding="basicHttpBinding" 
        bindingConfiguration="SecureBinding" 
        contract="FormsAuthenticatingServices.Interfaces.IDataService" /> 
      <endpoint address="json" 
        binding="webHttpBinding" 
        bindingConfiguration="SecureBinding" 
        behaviorConfiguration="jsonBehavior" 
        contract="FormsAuthenticatingServices.Interfaces.IDataService" /> 
     </service> 
     </services> 
    </system.serviceModel> 
+0

Quand vous dites "ça ne marche pas", quel échec obtenez-vous? Vous pouvez également activer le suivi pour obtenir des informations supplémentaires. –

+0

Je reçois le service sur /authservice.svc mais uniquement une page vide sur /authservice.svc/soap. Quel genre de suce parce que cela signifie que je ne reçois pas mon autre point final. Merci pour la suggestion de traçage. Je vais activer cela, mais je ne suis pas certain de l'ampleur de l'aide. –

+0

l'entrée de configuration que vous avez indiquée, il n'y a pas d'adresse de base. – Thomas

Répondre

2

Vous devriez obtenir les métadonnées à base SOAP à /authservice.svc?wsdl et les opérations basées sur REST à partir de l'URI /authservice.svc/json

Vous ne verrez rien dans un navigateur en appuyant sur /authservice.svc/soap lorsque SOAP suppose que les messages XML seront POSTés sur le service alors que le navigateur exécute un GET. Pour utiliser le service SOAP, créez un projet client et générez un proxy en utilisant Add Service Reference pointant sur le WSDL

+0

Merci. J'aurais du être mieux informé. J'ai essayé cela la nuit dernière et j'ai eu une erreur au sujet de la non-concordance du filtre d'adresse, mais au lieu de dépanner celui-là, j'ai cru que j'avais foiré quelque chose. Il s'avère que pour résoudre ce problème, tout ce que j'avais à faire était d'ajouter [ServiceBehavior (AddressFilterMode = AddressFilterMode.Any)] aux services. –

1

En plus de la réponse de Richard, assurez-vous que l'attribut name de l'élément <service> est le nom complet du service classe.

Questions connexes