Всем добрый день,
Интересно, есть ли способ вызвать функцию сервиса wcf мыла с несколькими параметрами из клиента php?
Я знаю, что вы можете встроить параметры в массив, а затем вызвать функцию. Но, к сожалению, мне нужно написать сервис, который будет совместим с существующими клиентами php. И те вызывают функции с отдельными параметрами.
Поэтому мне нужно отвечать на запросы, как это:
$soapClient = new SoapClient('http://myService?wsdl', $options);
$param1 = 1;
$param2 = 2;
$soapClient->doGoodThingsInTheNameOfTheMoon($param1, $param2);
но служба wcf, которую я написал, может ответить только на
$soapClient = new SoapClient('http://myService?wsdl', $options);
$soapClient->doGoodThingsInTheNameOfTheMoon(array("param1"=>1,"param2"=> 2));
Мой сервис выглядит следующим образом:
[ServiceContract]
public interface ImyserviceBinding
{
[OperationContract]
bool doGoodThingsInTheNameOfTheMoon(Param param1, Param param2);
}
с [DataContract]
а также [DataMember]
атрибуты, установленные типами данных
Так что мне нужно понизить версию до определенной версии wcf? Или указать какое-либо поведение в файле * .config?
web.config:
<configuration>
<appSettings/>
<system.web>
<compilation debug="true" targetFramework="4.0"/>
<httpRuntime/>
</system.web>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="MyServiceTypeBehaviors">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="MyServiceTypeBehaviors" name="myService.myService">
<endpoint address="" binding="basicHttpBinding"contract="ImyserviceBinding" >
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:60000/myService.svc" />
</baseAddresses>
</host>
</service>
</services>
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
<!--
To browse web app root directory during debugging, set the value below to true.
Set to false before deployment to avoid disclosing web app folder information.
-->
<directoryBrowse enabled="false"/>
</system.webServer>
</configuration>
Спасибо за любой совет!
Задача ещё не решена.
Других решений пока нет …