2009-06-23 6 views
0

J'ai une page Web ASP.NET qui contient une référence Web à un fichier WSDL SOAP. Si j'appelle les méthodes associées à ce WSDL (les méthodes résident sur un autre serveur), tout fonctionne correctement. Cependant, j'aimerais pouvoir changer dynamiquement l'adresse de point final où les points WSDL. La raison en est que nous hébergeons le même ensemble de services Web pour différents groupes et nous aimons suivre qui utilise les services Web. Ainsi, chaque ensemble a sa propre URL.Client .NET Web Service - Type de contenu de réponse trouvé par le client, 'text/plain', mais attendu 'text/xml'

J'ai essayé de changer la propriété « Url » sur mon objet client de savon à un point final différent, mais quand je le fais, les méthodes renvoient cette erreur:

Le client a trouvé de « text/plain » type de contenu de réponse, mais 'text/xml' attendu

Je pense que la propriété Url confond la classe proxy en pensant que j'utilise maintenant un service Web REST?

est ici une partie de mon code:


mySoapNamespace.mySoapClient soapClient = new mySoapNamespace.mySoapClient(); 

//next I try to change the endpoint URL of the WSDL, misguided? ... 
soapClient.Url = "http://a_different_url/my_soap_server.wsdl"; 
string result = soapClient.myTestMethod(); 
Response.Write(result); 

Et c'est là que je reçois l'erreur. Est-ce que quelqu'un connaît une solution ou une façon différente de changer dynamiquement le point de terminaison d'un appel SOAP?

Répondre

1

OK! J'ai compris ce que je faisais de mal. Lorsque je change la propriété Url de ma référence Web, je dois spécifier le point de terminaison code (la chose qui est l'adresse soap: dans la section wsdl: port du WSDL). Je spécifiais le WSDL lui-même:

soapClient.Url = "http://a_different_url/my_soap_server.wsdl";

... quand vraiment, j'aurais dû référencer le script PHP derrière elle.

soapClient.Url = "http://a_different_url/my_soap_server.php";

Je peux voir clairement à quoi la classe proxy définit mon URL (lorsque j'importe le WSDL), en regardant le fichier web.config. Il a une section appSettings qui répertorie l'URL. Et j'ai remarqué qu'il était pointé sur le fichier de code, pas le WSDL sur le serveur distant.

Questions connexes