330 votes

Le schéma URI fourni "https" est invalide; "http" est attendu. Nom du paramètre : via

Je suis en train de créer un service WCF via basicHttpBinding à utiliser sur https. Voici mon fichier web.config :

...

...

Je me connecte en utilisant WCFStorm qui est capable de récupérer correctement toutes les métadonnées, mais quand j'appelle la méthode réelle je reçois :

Le schéma URI fourni 'https' est invalide; 'http' attendu. Nom du paramètre: via

11 votes

En allemand, le message d'erreur se lit "Le schéma d'URI fourni "https" est invalide; "http" était attendu. Nom du paramètre : via", au cas où quelqu'un le recherche sur Google.

273voto

Jojo Sardez Points 4727

Essayez d'ajouter des informations d'identification de message sur votre app.config comme suit :

39 votes

Merci pour cette réponse à l'OP; j'avais le même problème et le fait de changer le mode de la balise de "Aucun" par défaut à "Transport" l'a corrigé.

1 votes

Sauf pour le bloc , qui a été rejeté par IIS6 pour une raison inconnue, cela a bien fonctionné.

4 votes

J'ai copié la même configuration dans mon projet mais cela n'a aucun effet. Ai-je oublié quelque chose à ajouter?

73voto

eidylon Points 2579

Ajoutant ceci comme réponse, juste parce que vous ne pouvez pas faire beaucoup de mise en forme avec les commentaires.
J'ai eu le même problème, sauf que je créais et liais entièrement mon client de service Web en code.
La raison est que le DLL était téléchargé dans un système, ce qui interdisait l'utilisation de fichiers de configuration.

Voici le code tel qu'il devait être mis à jour pour communiquer sur SSL...

Public Function GetWebserviceClient() As WebWorker.workerSoapClient
    Dim binding = New BasicHttpBinding()
    binding.Name = "WebWorkerSoap"
    binding.CloseTimeout = TimeSpan.FromMinutes(1)
    binding.OpenTimeout = TimeSpan.FromMinutes(1)
    binding.ReceiveTimeout = TimeSpan.FromMinutes(10)
    binding.SendTimeout = TimeSpan.FromMinutes(1)

    '// VOICI L'ÉLÉMENT IMPORTANT POUR SSL
    binding.Security.Mode = BasicHttpSecurityMode.Transport

    Dim endpoint = New EndpointAddress("https://monurl/worker.asmx")

    Return New WebWorker.workerSoapClient(binding, endpoint)
End Function

0 votes

Comment avez-vous créé les classes pour votre service web ?

0 votes

Cela fonctionne! J'ai eu le même problème dans mon C#. Il suffit de copier-coller et le problème est résolu.

0 votes

@kaiyaq - Je peux toujours me connecter au service sans problème pour le développement avec toutes les fonctionnalités standard, laissant VS créer les classes pour moi, qui sont ensuite compilées dans le DLL. C'est juste pendant l'exécution que je ne peux pas télécharger le fichier de configuration avec toutes les informations de connexion.

30voto

pattersonc Points 878

Exécutez-vous ceci sur le serveur Cassini (vs serveur de développement) ou sur IIS avec un certificat installé? J'ai déjà eu des problèmes en essayant 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 basicHttpBinding, il utilise wsHttpBinding. Je ne sais pas si c'est un problème pour vous.

et le point de terminaison

Assurez-vous également de modifier la configuration du client pour activer la sécurité de Transport.

1 votes

Local IIS 7 avec certificat auto-signé installé

13 votes

"Aussi, assurez-vous de modifier la configuration du client pour activer la sécurité du transport." -- Bon conseil. Trop facilement négligé et WCF ne donnera pas d'indices dans ses erreurs.

0 votes

Ne pas négocier le service d'identification et établir le contexte de sécurité invalide

20voto

Lijo Points 4002

J'ai eu la même exception dans un scénario de liaison personnalisée. Quiconque utilise cette approche peut également vérifier cela.

En fait, j'ajoutais la référence du service à partir d'un fichier WSDL local. 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 en https; pas en http. J'ai donc changé l'élément httpTransport en httpsTransport. Cela a résolu le problème.

Références

  1. WCF avec custombinding sur à la fois http et https

19voto

Randy Staats Points 331

J'ai eu exactement le même problème que l'OP. Ma configuration et ma situation étaient identiques. J'ai finalement réussi à identifier le 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 "Config" dans les paramètres (PAS sur le "Client Config"). Après avoir cliqué dessus, cliquez sur l'onglet "Sécurité" dans la fenêtre qui s'affiche. Assurez-vous que le "Type d'authentification" est défini sur "Aucun" (La valeur par défaut est "Authentification Windows"). Et voilà, ça marche! Je teste toujours mes méthodes dans WCFStorm pendant que je les développe, mais je n'ai jamais essayé de l'utiliser pour me connecter à un service déjà configuré en SSL. J'espère que cela aidera quelqu'un!

0 votes

J'ai eu exactement le même problème, mais j'avais le mauvais mot de passe en utilisant l'authentification "Nom d'utilisateur/Mot de passe". Il s'avère que si vous changez votre mot de passe, vous devez cliquer sur l'URL du service et sur le bouton "Actualiser" dans la barre d'outils pour qu'il soit pris en compte.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X