Подключение к службе WCF в PHP, имеющей привязку NetTCP и привязку BasicHttpBinding - PullRequest
3 голосов
/ 19 декабря 2009

У меня есть сервис WCF. Он имеет несколько клиентов и три конечных точки. Привязки конечной точки являются nettcp, wsHttp и basicHttp. Если я попытаюсь подключиться к нему через встроенный класс php'd класса SoapClient, вот так:

$service = new SoapClient
("http://service.companyname.local:6666/Service/?wsdl",
 array(
         "location" => "http://service.companyname.local:6666/Service/Basic",

    "trace" => true,
    'soap_version' => SOAP_1_1
     )
);

Я получаю следующее:

PHP Fatal error:  SOAP-ERROR: Parsing WSDL: PHP-SOAP doesn't support transport 'http://schemas.microsoft.com/soap/tcp' in c:\www\client.php on line 666

Прямо сейчас мой обходной путь - сохранить wsdl вручную и удалить привязку nettcp. Есть ли обходной путь, который позволит мне использовать автоматически сгенерированный wsdl? Могу ли я скрыть привязку от wsdl в web.config? Могу ли я генерировать разные wsdls на разных привязках. Я не хочу развертывать два сервисных хоста.

Ответы [ 3 ]

1 голос
/ 20 декабря 2009

Когда вы говорите, что не хотите развертывать два хоста службы, я предполагаю, что вы самостоятельно размещаете один ServiceHost в службе Windows. Я решил эту проблему, построив общий хост службы, который может содержать столько внутренних ссылок на сервисы, сколько я хочу (например, это новый ServiceHost для каждой записи сервиса в конфигурации). Таким образом, я могу гибко разместить столько служб в одной службе Windows, сколько мне нужно. Это решило бы вашу проблему, позволив вам отделить привязанную службу basicHttp от других, чтобы поддерживать WSDL в чистоте. Есть несколько примеров этого плавающего кода с открытым исходным кодом ( здесь 's one).

Единственный другой способ, которым я мог бы подумать, это представить собственную конечную точку метаданных, созданную из WsdlExporter (см. здесь )

Удачи!

0 голосов
/ 17 января 2010

Другой вариант, который я сейчас изучаю, - это сторонний мыльный клиент для PHP под названием WSF-PHP .

.
0 голосов
/ 09 января 2010

Я отправил запрос на функцию с PHP . Если они реализуют это, я отмечу это как правильный ответ. Я все еще открыт для лучших обходных путей.

ОБНОВЛЕНИЕ: Я представил патч для реализации этого. Я ожидаю его одобрения.
ОБНОВЛЕНИЕ: Патч переданный svn. В ожидании следующего выпуска PHP.
ОБНОВЛЕНИЕ: Патч теперь является частью PHP 5.3.3 и 5.2.14.

...