Il est assez difficile de trouver des informations sur la bibliothèque xmlrpc.net utilisée avec https.
La seule documentation dans laquelle une URL "https" peut être définie est ici: http://xml-rpc.net/faq/xmlrpcnetfaq-2-0.html#2.3 mais Pourtant, cela n'explique pas exactement comment peut-on installer correctement. P>
expérimenter sur la base d'échantillons fournis dans les téléchargements http://xmlrpcnet.googlecode.com/files/xml-rpc.net.2.5.0.zip J'ai essayé ceci: p>
ce que le code serveur ressemble à strong> IDictionary props = new Hashtable();
props["name"] = "MyHttpChannel";
props["port"] = 5678;
HttpChannel channel = new HttpChannel(
props,
null,
new XmlRpcServerFormatterSinkProvider()
);
ChannelServices.RegisterChannel(channel, false);
RemotingConfiguration.RegisterWellKnownServiceType(
typeof(StateNameServer),
"statename.rem",
WellKnownObjectMode.Singleton);
3 Réponses :
Créer un proxy client à l'aide de xmlrpcproxygen.create, en spécifiant l'URL HTTPS (votre interface devrait dériver de ixmlrpcroxy). Si vous devez fournir un certificat (s) client (s), le proxy dispose d'une propriété clientCertificats qui peut être utilisée de la même manière que la propriété correspondante sur la classe System.net.Httpwebrequest. P>
Je ne pense pas que les télécommandes puissent supporter HTTPS. Vous pouvez utiliser HTTplistener comme décrit dans le FAQ XML-RPC.NET < / a> Mais vous devrez configurer un certificat, par exemple comme décrit dans cette blog p>
Merci Charles. J'ai essayé d'utiliser xmlrpcproxygen, mais le client continue d'abandonner une exception lors de la tentative d'envoi de données. Le serveur n'a-t-il pas besoin d'une sorte de certificat aussi?
Ajout du paragraphe sur la mise en œuvre d'un serveur.
Merci pour votre aide Charles, votre lien m'a aidé à trouver la solution. J'ai ajouté le certificat au serveur (mon ordinateur local) ... le reste de la solution ci-dessous dans ma réponse.
Premièrement, je voudrais remercier chaleureusement Charles Cook pour son aide sur ce problème et pour développer xmlrpc.net.
second, cet exemple est basé sur l'échantillon XMLRPC.NET STATENAMESERVER DISPONIBLE POUR TÉLÉCHARGER ICI: http://xml-rpc.net/download.html p>
Donc, voici la solution: p>
bien sûr, je ne donne pas ici le Mise en œuvre de l'interface pour le serveurStatename, mais vous le trouverez dans les exemples de fichiers à l'aide du lien de téléchargement en haut. p> remarque em>: p> Si vous trouvez tout ce qui pourrait être amélioré et qu'il est incorrect, il sera très apprécié. P> P> système .NET.ServicePointManager.CertificatePolicy = nouveau fidutaleCertificatePolicy () code>; permettra à l'implémentation du serveur d'accepter le certificat auto-signé que vous avez généré vous-même. Je pense que cela n'est pas nécessaire avec des certificats émis par les autorités de certification. P>
Après le test, je peux confirmer que la mise en œuvre fonctionne sur deux machines Windows distinctes.
Super article! M'aide beaucoup. Mais les articles 1 et 2 m'ont emmené un jour pour comprendre. Alors voici mon expérience: p>
netsh http Ajouter SSLCERT IPPORT = 192.168.111.195: 4022 CERTHASH = C8973A86141A7A564A6F509A1ECFEA326A1852A2 Appid = {0A582A74-FC2D-476C-9281-C73B2E4BFB26} Code>, où 'ipport' est IP / paire de ports qui sera utilisé pour la connexion SSL; 'certhash' est un certificat hachage (certificat ouvert que vous avez créé dans l'étape précédente-> aller à des détails -> Recherchez pour ThumbPrint); 'Appid' pourrait être n'importe où. Li>
ul> li>
ol>
Si vous spécifiez "HTTPS" dans votre URL HTTplistener, cette classe recherchera automatiquement des certificats liés. P>
Glat ça a aidé! :) J'essaie d'essayer de tes notes.