Клиент веб-службы .NET — клиент обнаружил тип содержимого ответа «текст/обычный», но ожидал «текст/xml»

У меня есть веб-страница ASP.NET, на которой есть веб-ссылка на SOAP WSDL. Если я вызываю методы, связанные с этим WSDL (методы живут на другом сервере), все работает нормально. Однако я хотел бы иметь возможность динамически изменять адрес конечной точки, на который указывает WSDL. Причина в том, что мы размещаем один и тот же набор веб-сервисов для разных групп, и нам нравится отслеживать, кто использует веб-сервисы. Таким образом, каждый набор имеет свой собственный URL.

Я попытался изменить свойство "Url" в моем клиентском объекте мыла на другую конечную точку, но когда я это делаю, методы возвращают эту ошибку:

Клиент обнаружил тип содержимого ответа «текст/обычный», но ожидал «текст/xml»

Я думаю, что свойство Url сбивает с толку прокси-класс, заставляя его думать, что теперь я использую веб-службу REST?

Вот часть моего кода:


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);

И вот где я получаю ошибку. Кто-нибудь знает исправление или другой способ динамического изменения конечной точки вызова SOAP?


person Nick R.    schedule 23.06.2009    source источник


Ответы (1)


Хорошо! Я понял, что я делаю неправильно. Когда я изменяю свойство Url моей веб-ссылки, мне нужно указать конечную точку code (то, что является soap:address в разделе wsdl:port WSDL). Я указывал сам WSDL:

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

... когда на самом деле я должен был ссылаться на PHP-скрипт, стоящий за ним.

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

Я могу ясно видеть, какой класс прокси устанавливает мой URL-адрес (когда я импортирую WSDL), просматривая файл web.config. В нем есть раздел appSettings, в котором указан URL-адрес. И я заметил, что это было указано на файл кода, а не на WSDL на удаленном сервере.

person Nick R.    schedule 24.06.2009