Exception WCF: impossible de trouver une adresse de base correspondant au schéma http pour le noeud final
Je suis en train d'accueillir un service web WCF sur un autre Site web dans IIS avec https à 443 comme la seule liaison.
Les configurations suivantes fonctionne bien lorsque je l'utilise dans un site web qui utilise à la fois les liaisons (http(80) /https(443)). Si je supprime la liaison http, il commence par jeter l'erreur suivante.
Ne pouvait pas trouver une adresse de base qui correspond le schéma http pour le point de terminaison avec la liaison BasicHttpBinding. Enregistré adresse de base, les régimes de [https].
Comment puis-je le faire fonctionner dans un site web IIS avec liaison https?
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="defaultBasicHttpBinding">
<security mode="Transport">
<transport clientCredentialType="None" proxyCredentialType="None" realm=""/>
<message clientCredentialType="Certificate" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost/ERPService/retailPayment.svc"
binding="basicHttpBinding" bindingConfiguration="defaultBasicHttpBinding"
contract="RetailPaymentService.RetailPayment.SVRetailPaymentService" name="EnterpriseRetailPayment" />
</client>
<behaviors>
<serviceBehaviors>
<behavior name="MyServiceTypeBehaviors">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
<behavior>
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="MyEndPointBehavior">
<!--<SchemaValidator enabled="true"/>-->
</behavior>
</endpointBehaviors>
</behaviors>
<services>
<service name="SettlementSalesCollection.SaleItemService" behaviorConfiguration="MyServiceTypeBehaviors">
<endpoint behaviorConfiguration="MyEndPointBehavior" binding="basicHttpBinding"
name="SettlementSalesCollection"
contract="SettlementSalesCollection.CITransactionSettlementListenerService" />
<endpoint name="mexEndpoint" contract="IMetadataExchange" binding="mexHttpBinding" address="mex" />
</service>
</services>
<extensions>
<behaviorExtensions>
<add name="SchemaValidator"
type="SettlementSalesCollection.SchemaValidation.SchemaValidationBehavior+CustomBehaviorSection, SettlementSalesCollectionService, Version=1.0.0.0, Culture=neutral" />
</behaviorExtensions>
</extensions>
<protocolMapping>
<add binding="basicHttpsBinding" scheme="https" />
</protocolMapping>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
</system.serviceModel>
source d'informationauteur KManohar | 2013-11-11
Vous devez vous connecter pour publier un commentaire.
Votre configuration doit ressembler à ça. Vous pourriez avoir à changer
<transport clientCredentialType="None" proxyCredentialType="None" />
en fonction de vos besoins à des fins d'authentification. La config ci-dessous ne nécessite pas d'authentification.Qui permettra à un service WCF avec
basicHttpBinding
d'utiliser le protocole HTTPS.Mon problème a été causé par le manque de liaisons dans IIS:
Cliquez-droit sur le site > modifier les liaisons > ajouter > https
Choisissez "IIS Express Certificat de Développement" et de définir le port 443
Ensuite, j'ai ajouté une autre liaison à la webconfig:
<endpoint address="wsHttps" binding="wsHttpBinding" bindingConfiguration="DefaultWsHttpBinding" name="Your.bindingname" contract="Your.contract" />
Également ajouté à serviceBehaviours:
<serviceMetadata httpGetEnabled="false" httpsGetEnabled="true" />
Et finalement, il a travaillé, aucune des solutions que j'ai vérifié sur stackoverflow pour cette erreur était applicable à mon scénario spécifique, donc y compris ici dans le cas où il aide les autres à
Vous pouvez l'obtenir si vous ne configurez
https
comme un site de liaison à l'intérieur de IIS.Vous devez ajouter
http(80)
ainsi quehttps(443)
- au moins j'ai fait 🙂J'ai essayé de la liaison en fonction de la réponse par @Szymon mais Il ne fonctionne pas pour moi. J'ai essayé basicHttpsBinding ce qui est nouveau dans .net 4.5 et Il a résolu le problème. Voici la configuration qui fonctionne pour moi.
Pour info: Mon application cible est le framework 4.5.1. IIS site web que j'ai créé pour déployer ce service wcf a seulement une liaison https activé.
Dans mon cas, la liaison de nom en vertu du protocole de cartographie ne correspond pas à la liaison nom sur l'ordinateur d'extrémité. Ils correspondent dans l'exemple ci-dessous.
et
Ma question a également été causée par le manque de liaison https dans IIS:
Sélectionné par défaut de site web > Sur le volet de droit sélectionnés Liaisons > ajouter > https
Choisissez "IIS Express Certificat de Développement" et de définir le port 443