2009-07-25 5 views
4

J'ai essayé d'ajouter un nouveau point de terminaison dans un service hébergé sous IIS, mais je n'ai pas réussi à le comprendre depuis un jour ou deux.Plusieurs points de terminaison sous IIS

Ceci est ma compréhension:

  • vous pouvez avoir plusieurs points de terminaison sous IIS tant qu'ils ont des adresses uniques.
  • Vous pouvez affecter une adresse de base mais elle sera remplacée par la configuration du répertoire virtuel dans IIS.

Mon répertoire virtuel est http://localhost/WcfCert/

<services> 
    <service name="WcfCertServer.Service1" behaviorConfiguration="WcfCertServer.Service1Behavior"> 
    <endpoint address="" binding="wsHttpBinding" contract="WcfCertServer.IService1"/> 
    <endpoint address="test" binding="wsHttpBinding" contract="WcfCertServer.IService1"/> 
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/> 
    </service> 
</services> 

je peux apporter le service à l'aide http://localhost/wcfcert/service1.svc

mais http://localhost/wcfcert/test/service1.svc/test ne retourne rien dans IE ou l'application cliente

que suis-je manquant ici?

Edit:

donc je l'ai fait d'autres tests, et voici ce que j'ai découvert. Si je démarre WcfTestClient.exe et ajoute http://localhost:1523/Service1.svc ou http://localhost:1523/Service1.svc/mex, il ajoutera le point de terminaison sous cette adresse. alors voici ma question ne devrait pas http://localhost:1523/Service1.svc ne représentent que le premier point de terminaison? Pourquoi l'ajout de cette adresse fait apparaître les deux extrémités?

mais si je tente d'ajouter http://localhost:1523/Service1.svc/test je reçois

Error: Cannot obtain Metadata from http://localhost:1523/Service1.svc/test If this is a Windows (R) Communication Foundation service to which you have access, please check that you have enabled metadata publishing at the specified address. For help enabling metadata publishing, please refer to the MSDN documentation at http://go.microsoft.com/fwlink/?LinkId=65455.WS-Metadata Exchange Error URI: http://localhost:1523/Service1.svc/test Metadata contains a reference that cannot be resolved: ' http://localhost:1523/Service1.svc/test '. Sendera:BadContextToken The message could not be processed. This is most likely because the action ' http://schemas.xmlsoap.org/ws/2004/09/transfer/Get ' is incorrect or because the message contains an invalid or expired security context token or because there is a mismatch between bindings. The security context token would be invalid if the service aborted the channel due to inactivity. To prevent the service from aborting idle sessions prematurely increase the Receive timeout on the service endpoint's binding.HTTP GET Error URI: http://localhost:1523/Service1.svc/test There was an error downloading ' http://localhost:1523/Service1.svc/test '. The request failed with HTTP status 400: Bad Request.

+2

J'ai un problème similaire, j'aimerais obtenir une solution à cela: la seule différence avec ce que vous décrivez s être que je reçois une '400 Bad Request' sans texte. Je suis la description sur http://msdn.microsoft.com/fr-fr/library/ms733766.aspx qui indique dans le commentaire que l'URL résultante sera - traduite dans votre exemple - http: //localhost/wcfcert/service1.svc/test. Ça ne marche pas pour moi non plus. –

+0

L'URL ne fonctionne pas dans IE (.../Service1.svc/test). Mais créer un proxy ajoute le même point de terminaison que cela fonctionne. Référez-vous à ce http://msdn.microsoft.com/en-us/library/ms751515(v=vs.110).aspx –

Répondre

2

Il serait en fait:

http://localhost/wcfcert/service1.svc/test

Si vous voulez que l'URL soit 'http://localhost/wcfcert/test/service1.svc', alors vous devrez spécifiez l'URL complète dans l'attribut d'adresse.

+0

J'ai essayé les deux, maintenant je reçois 'HTTP 400 Bad request.' –

+0

@Keivan: Pour la deuxième option, avez-vous défini address = "http: //localhost/wcfcert/test/service1.svc", ou laissez-le simplement à l'adresse = "test"? Si vous souhaitez que l'URL soit http: //localhost/wcfcert/test/service1.svc, vous devez vous assurer de spécifier l'adresse complète dans l'attribut address. – jrista

+0

J'ai essayé à la fois "localhost/wcfcert/test/service1.svc" et "localhost/wcfcert/service1.svc/test" –

0

J'ai récemment rencontré un problème similaire, et je crois que la raison en est que WcfTestClient nécessite que le point de terminaison mex interroge les métadonnées pour le service qu'il est en train de tester.

Lorsque vous ajoutez l'adresse de service "http://localhost:1523/Service1.svc" au WcfTestClient, il interroge en fait le point final "http://localhost:1523/Service1.svc/mex" pour obtenir la description du service.

L'erreur « Impossible d'obtenir des métadonnées à partir "http://localhost:1523/Service1.svc/test" est affiché parce que le WcfTestClient est à la recherche de la «/test/MEx » point final pour obtenir les métadonnées pour le service à «/test ».

Pour résoudre ce problème, vous besoin d'ajouter un autre critère d'évaluation pour fournir des métadonnées sur le service hébergé à l'adresse «/test »:..

<endpoint address="/test/mex" binding="mexHttpBinding" contract="IMetadataExchange"/> 

Ceci est la solution qui a fonctionné pour moi

Questions connexes