J'essaie de créer un service WCF sur basicHttpBinding à utiliser sur https. Voici mon web.config:
<!-- language: xml -->
<service behaviorConfiguration="MyServices.PingResultServiceBehavior"
name="MyServices.PingResultService">
<endpoint address=""
binding="basicHttpBinding"
bindingConfiguration="defaultBasicHttpBinding"
contract="MyServices.IPingResultService">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
...
<bindings>
<basicHttpBinding>
<binding name="defaultBasicHttpBinding">
<security mode="Transport">
<transport clientCredentialType="None"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
...
<behaviors>
<serviceBehaviors>
<behavior name="MyServices.UpdateServiceBehavior">
<serviceMetadata httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
Je me connecte en utilisant WCFStorm qui est capable de récupérer correctement toutes les métadonnées, mais lorsque j'appelle la méthode réelle, j'obtiens:
Le schéma d'URI fourni «https» n'est pas valide; «http» attendu. Nom du paramètre: via
Réponses:
Essayez d'ajouter des informations d'identification de message sur votre app.config comme:
la source
Ajouter ceci comme réponse, juste parce que vous ne pouvez pas faire beaucoup de mise en forme de fantaisie dans les commentaires.
J'ai eu le même problème, sauf que je créais et liais mon client de service Web entièrement en code.
La raison en est que la DLL était téléchargée dans un système, ce qui interdisait l'utilisation de fichiers de configuration.
Voici le code car il devait être mis à jour pour communiquer via SSL ...
la source
Changer de
à
dans votre fichier web.config. Cette modification vous permettra d'utiliser https au lieu de http
la source
Exécutez-vous cela sur le Cassini (vs serveur de développement) ou sur IIS avec un certificat installé? J'ai eu des problèmes dans le passé pour essayer de connecter des points de terminaison sécurisés sur le serveur Web de développement.
Voici la configuration de liaison qui a fonctionné pour moi dans le passé. Au lieu de cela
basicHttpBinding
, il utilisewsHttpBinding
. Je ne sais pas si c'est un problème pour toi.et le point final
Assurez-vous également de modifier la configuration du client pour activer la sécurité du transport.
la source
J'ai eu la même exception dans un
custom binding
scénario. Quiconque utilise cette approche peut également le vérifier.J'étais en train d'ajouter la référence de service à partir d'un
local WSDL
fichier. Il a été ajouté avec succès et la liaison personnalisée requise a été ajoutée au fichier de configuration. Cependant, le service réel était https; pas http. J'ai donc changé l'elemet httpTransport en tant quehttpsTransport
. Cela a résolu le problèmeRéférences
la source
J'ai eu le même problème EXACT que l'OP. Ma configuration et ma situation étaient identiques. Je l'ai finalement réduit à un problème dans WCFStorm après avoir créé une référence de service dans un projet de test dans Visual Studio et confirmé que le service fonctionnait. Dans Storm, vous devez cliquer sur l'option de configuration "Config" (PAS LA "Config Client"). Après avoir cliqué dessus, cliquez sur l'onglet "Sécurité" dans la boîte de dialogue qui apparaît. Assurez-vous que "Type d'authentification" est défini sur "Aucun" (la valeur par défaut est "Authentification Windows"). Presto, ça marche! Je teste toujours mes méthodes dans WCFStorm au fur et à mesure que je les développe, mais je n'ai jamais essayé de l'utiliser pour me connecter à une qui a déjà été configurée sur SSL. J'espère que cela aide quelqu'un!
la source
Ran dans le même problème, voici comment ma solution s'est avérée à la fin:
J'ai essentiellement remplacé chaque occurrence de Http par Https. Vous pouvez essayer d'ajouter les deux si vous préférez.
la source
Si vous le faites par programme et non dans web.config, c'est:
la source
Il est bon de se rappeler que les fichiers de configuration peuvent être divisés en fichiers secondaires pour faciliter les modifications de configuration sur différents serveurs (dev / demo / production, etc.), sans avoir à recompiler le code / l'application, etc. Par exemple, nous les utilisons pour permettre aux ingénieurs sur site de apporter des modifications aux points de terminaison sans toucher réellement aux «vrais» fichiers.
La première étape consiste à déplacer la section des liaisons hors de WPF App.Config dans son propre fichier séparé.
La section des comportements est définie pour autoriser à la fois http et https (ne semble pas avoir d'effet sur l'application si les deux sont autorisés)
Et nous déplaçons la section des liaisons vers son propre fichier;
Dans le fichier bindings.config, nous basculons la sécurité en fonction du protocole
Désormais, les ingénieurs sur site n'ont plus qu'à modifier le fichier Bindings.Config et Client.Config où nous stockons l'URL réelle de chaque point de terminaison.
De cette façon, nous pouvons changer le point de terminaison de http en https et vice-versa pour tester l'application sans avoir à changer de code.
J'espère que cela t'aides.
la source
Pour récapituler la question dans le PO:
Les didacticiels WCFStorm résolvent ce problème dans Travailler avec IIS et SSL .
Leur solution a fonctionné pour moi:
La dernière puce de l'élément (1) signifie en effet de supprimer le préfixe d'espace de noms que VS ajoute à l'attribut de contrat de noeud final, par défaut "ServiceReference1"
donc dans le fichier app.config que vous chargez dans WCFStorm que vous voulez pour ListsService:
la source
J'avais besoin des fixations suivantes pour que la mienne fonctionne:
la source
wsHttpBinding est un problème car silverlight ne le prend pas en charge!
la source