EndpointNotFoundException - 404 - Hosting Service WCF sur HTTPS dans IIS via Visual Studio
Je suis le développement d'un service WCF à l'aide de transport paramètres de sécurité. Lors de l'essai de proxy client et l'appel de la méthode du service-je obtenir suivantes EndpointNotFoundException
:
Il n'y a pas de point de terminaison de l'écoute à
https://MyPC/AMTA.WebService/BroadcastInfoService.svc
que peut accepter le message. Cela est souvent causé par une mauvaise adresse ou du SAVON d'action. Voir InnerException, le cas échéant, pour plus de détails.Exception interne:
Le serveur distant a retourné une erreur: (404) Pas Trouvé.
Je suis l'hébergement de mon service par le biais de visual studio.
web.config
pour le service:
<system.serviceModel>
<services>
<service name="AMTA.WebService.Broadcasts.BroadcastInfoService">
<endpoint address="/BroadcastInfoService.svc" binding="wsHttpBinding" contract="AMTA.WebService.Interface.Broadcasts.IBroadcastInfoService"/>
<endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" />
</service>
</services>
<bindings>
<wsHttpBinding>
<binding name="TransportSecurity">
<security mode="Transport">
<transport clientCredentialType="None"/>
</security>
</binding>
</wsHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="false" httpsGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
</system.serviceModel>
Config pour le client:
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding name="WSHttpBinding_IBroadcastInfoService">
<security mode="Transport">
<transport clientCredentialType="None"/>
</security>
</binding>
</wsHttpBinding>
</bindings>
<client>
<endpoint address="https://MyPC/AMTA.WebService/BroadcastInfoService.svc"
binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IBroadcastInfoService"
contract="BroadcastInfoService.IBroadcastInfoService" name="WSHttpBinding_IBroadcastInfoService">
</endpoint>
</client>
</system.serviceModel>
Je suis le déploiement à l'aide de Web page de propriétés du projet pour les locaux IIS à l'aide de ce répertoire virtuel:
https://MyPC:443/AMTA.WebService/
Je peux parcourir https://MyPC:443/AMTA.WebService/BroadcastInfoService.svc
après l'appui sur la touche F5, ce qui montre la page avec wsdl info. Si, quand j'essaie d'appeler des méthodes sur proxy client, endpoint pas trouvé exception est levée avec la suite du journal de détails
Système.ServiceModel.EndpointNotFoundException, Système.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
Le service '/AMTA.WebService/BroadcastInfoService.svc/" n'existe pas.
StackTrace
au Système.ServiceModel.ServiceHostingEnvironment.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath, EventTraceActivity eventTraceActivity)
au Système.ServiceModel.ServiceHostingEnvironment.EnsureServiceAvailableFast(String relativeVirtualPath, EventTraceActivity eventTraceActivity)
Https et Http en-têtes d'hôte sont activés pour IIS et Https est liée à certificat auto-signé.
- 443 ouvert entre l'hôte et le client? Sont l'hôte et le client sur la même case? Essayez ceci: https: [pas d'espace] //127.0.0.1:443/AMTA.WebService/BroadcastInfoService.svc
- Oui, tout est sur la même machine.
- Donc, essayez Localhost ou 127.0.0.1 et voir si vous obtenez un résultat différent.
- Ce qui se passe lorsque vous accédez à la même adresse que celle que vous avez dans votre configuration de client? Vous avez dit que vous accédez à
https://MyPC:443/AMTA.WebService/BroadcastInfoService.svc
dans le navigateur et il fonctionne, mais votre client config dithttps://MyPC/AMTA.WebService/BroadcastInfoService.svc
qui ne peut pas résoudre à la même place, selon la façon dont votre IIS/IIS Express/Visual Studio site web est configuré. Aussi, ce nom d'hôte est le cert délivré? Que peut vous poser quelques questions supplémentaires plus tard si le cert est délivré àMyPC.Domain.com
oulocalhost
et vous êtes à la navigation àMyPc
- J'ai régénéré le service de référence et a obtenu de résultat étrange dans la nouvelle configuration du client: adresse="...AMTA.WebService/BroadcastInfoService.svc/BroadcastInfoService.svc"
- Cert est délivré à MyPC. J'ai essayé différentes combinaisons dans la configuration du client, mais sans succès. J'ai aussi regardé dans mon wsdl et svc fichier est doublé à l'adresse ...AMTA.WebService/BroadcastInfoService.svc/BroadcastInfoService.svc
- Pas de chance avec Localhost ou 127.0.0.1, que ce soit avec ou sans le port
- Pas sûr de ce que suggèrent ... des symptômes, on dirait que le client ne peut pas trouver l'hôte, c'est pourquoi j'ai proposé d'utiliser localhost ou son adresse IP équivalent.
- Quand je regarde dans mon cert dans IIS-je obtenir - "Cette autorité de certification Racine de Certificat n'est pas approuvé" - c'est peut-être la cause?
Vous devez vous connecter pour publier un commentaire.
Le coupable était manquant
d'extrémité de l'élément dans le web.config.
Par la façon dont vous pouvez répondre aux exigences de sécurité en utilisant simplement basicHttpsBinding, ce qui est nouveau .Net 4.5. Cela conduira à une plus concis xml configs. Qui sont du diable, de toute façon.