Valori di string restituiti da PHP SoapServer non ricevuto dal client .Net

Sto usando il documento WSDL generato automaticamente da Visual Studio 2010 (cioè dall'applicazione "HelloWorld" che viene creata quando si crea una nuova applicazione di servizio Web in Visual Studio.) Ma ho bisogno di sviluppare il servizio web in PHP, quindi Sto usando questo documento WSDL con PHP SoapServer. Copierò il documento WSDL qui:

<?xml version="1.0" encoding="utf-8"?> <wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://tempuri.org/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" targetNamespace="http://tempuri.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> <wsdl:types> <s:schema elementFormDefault="qualified" targetNamespace="http://tempuri.org/"> <s:element name="HelloWorld"> <s:complexType /> </s:element> <s:element name="HelloWorldResponse"> <s:complexType> <s:sequence> <s:element minOccurs="0" maxOccurs="1" name="HelloWorldResult" type="s:string" /> </s:sequence> </s:complexType> </s:element> </s:schema> </wsdl:types> <wsdl:message name="HelloWorldSoapIn"> <wsdl:part name="parameters" element="tns:HelloWorld" /> </wsdl:message> <wsdl:message name="HelloWorldSoapOut"> <wsdl:part name="parameters" element="tns:HelloWorldResponse" /> </wsdl:message> <wsdl:portType name="Service1Soap"> <wsdl:operation name="HelloWorld"> <wsdl:input message="tns:HelloWorldSoapIn" /> <wsdl:output message="tns:HelloWorldSoapOut" /> </wsdl:operation> </wsdl:portType> <wsdl:binding name="Service1Soap" type="tns:Service1Soap"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" /> <wsdl:operation name="HelloWorld"> <soap:operation soapAction="http://tempuri.org/HelloWorld" style="document" /> <wsdl:input> <soap:body use="literal" /> </wsdl:input> <wsdl:output> <soap:body use="literal" /> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:binding name="Service1Soap12" type="tns:Service1Soap"> <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" /> <wsdl:operation name="HelloWorld"> <soap12:operation soapAction="http://tempuri.org/HelloWorld" style="document" /> <wsdl:input> <soap12:body use="literal" /> </wsdl:input> <wsdl:output> <soap12:body use="literal" /> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="Service1"> <wsdl:port name="Service1Soap" binding="tns:Service1Soap"> <soap:address location="helloworld_server.php" /> </wsdl:port> <wsdl:port name="Service1Soap12" binding="tns:Service1Soap12"> <soap12:address location="helloworld_server.php" /> </wsdl:port> </wsdl:service> </wsdl:definitions> 

Il mio codice PHP SoapServer si presenta così:

 function HelloWorld() { return "Hello world!"; } $server = new SoapServer( 'helloworld.wsdl' ); $server->addFunction('HelloWorld'); try { $server->handle(); } catch (Exception $e) { $server->fault('Sender', $e->getMessage()); } 

Quando provo a call questo servizio di soap con un client .Net, ricevo una string vuota restituita. Qualcuno sa cosa sta andando male con questo semplice esempio?

AGGIORNARE:

Questo in particolare sembra essere un problema con la comunicazione con un client .Net dal server PHP. Ho provato con un client PHP e ottengo il messaggio restituito dal server nel client PHP. Ma per qualche ragione il client .Net ottiene una string vuota restituita. Per il client .Net, ho creato una semplice applicazione WinForms, aggiunto un riferimento Web al server php soap. Il riferimento web viene aggiunto correttamente e mostra l'API. Ho inserito un button nel module con il seguente handle di clic:

 private void button1_Click(object sender, EventArgs e) { WebReference.Service1 srv = new WebReference.Service1(); string result = srv.HelloWorld(); MessageBox.Show(result); }