この質問は、Windows Server 2008上のWindowsアプリケーションでホストされているWCFサービスを、同じサーバー上のIIS 7でホストされているPHPスクリプト、および他の場所でホストされている他のアプリケーションからのものです。Windows 2008サーバー上のWindowsアプリケーションでホストされているWCFサービスを使用するPHP SoapClient
このアプリケーションは、Visual Studio 2010、.NET Framework 4、IIS 7、およびさまざまなバージョンのPHPを使用して、Windows 7マシンで完全に開発およびテストされています。
Windows 7マシンでは、netshを次のように使用しました。
netsh http add urlacl url=http://localhost:8000/WCFService/ user=machinename\user
その他のさまざまなポートもテスト中に追加して使用できました。
アプリケーションをWindows 2008 Serverにコピーすると、アプリケーションの重要な部分が正常にテストされました。
同じnetshコマンドは、Windows 2008 Serverで使用された、まだlocalhostを次のようにドメインとサーバーのIPとマシン名と置き換えた。
netsh http add urlacl url=http://serveripaddress:8000/WCFService/ user=domain\user
PHPのSoapClient作業、様々なユーザーを取得しようとする試みの間に=」 ... "というオプションが試行されました。次のように
初期PHPのSoapClientスクリプトは次のとおりです。
try {
$client = new SoapClient("http://serveripaddress:8000/WCFService/?wsdl");
} catch (Exception $e) {
echo $e->getMessage(), "\n";
exit();
}
初期テスト中に、次のエラーが発生しました:
Warning: SoapClient::SoapClient(http://serveripaddress:8000/WCFService/?wsdl) [soapclient.soapclient]: failed to open stream: HTTP request failed! in C:\inetpub\wwwroot\Sites\www.myurl.com\WCF-Test.php on line 7
Warning: SoapClient::SoapClient() [soapclient.soapclient]: I/O warning : failed to load external entity "http://serveripaddress:8000/WCFService/?wsdl" in C:\inetpub\wwwroot\Sites\www.myurl.com\WCF-Test.php on line 7
SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://serveripaddress:8000/WCFService/?wsdl' : failed to load external entity "http://serveripaddress:8000/WCFService/?wsdl"
を以下に縮小エラー周りいじっていくつかの後:
SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://serveripaddress:8000/WCFService/?wsdl' : failed to load external entity "http://serveripaddress:8000/WCFService/?wsdl"
次にwsdlをファイルに展開し、次のPHPを使用しましたスクリプト:私は手元の問題は、クライアントに、サービスの「可視性」に関連すると考えています
SOAP-ERROR: Parsing Schema: can't import schema from 'http://serveripaddress:8000/WCFService/?xsd=xsd0'
、および:
try {
$client = new SoapClient("wsdl\wcf-wsdl.wsdl");
} catch (Exception $e) {
echo $e->getMessage(), "\n";
exit();
}
誤差は、次のように少し変更しましたおそらく許可。
投稿数を読んだ後、私はまだこの問題の解決策を見つけることができませんでした。
ご協力いただければ幸いです。
事前に感謝します。
こんにちはRajesh、あなたの答えをありがとう。あなたが提供したリンクの投稿をよく見ていきます。 –
私は、Windows 7の下で、同じwsdlを使って、開発システムに完全に対応したソリューションを持っていると付け加えました。私はこれが平らなwsdlとの違いをもたらすかどうかはわかりません。 –
サービスが相互運用できるようにするには、フラットwsdlを使用することをお勧めします。あなたの開発環境では、上記の場所にxsdをダウンロードするためにサーバーにアクセスできますか? xsd = xsd1などですが、サーバー上のリソースにアクセスしようとしている外部クライアントの想像してください.svc?xsd = xsd1。サーバー上のファイアウォールがそのリソースへのアクセスを許可していない可能性があります。 – Rajesh