0

インターネットを介して.NETWebサービスに要求を送信したいのですが、問題は、WSDLのSOAPアドレスにプライベートIPアドレスがあることです。

<soap:address location="http://10.10.1.1/xxxxx/yyyyyyyyyy.asmx" />

また、PHPやNuSOAPなどでリクエストを送信しようとすると、次の場所でエラーが発生します。

HTTPエラー:サーバーへのソケット接続を開くことができませんでしたhttp://10.10.1.1/xxxxx/yyyyyyyyyy.asmx、エラー(110):接続がタイムアウトしました

これは正常ですか?反対側では、BizTalkを使用しており、修正方法がわからないと思います。

SOAP::LiteまたはのようなPerlソリューションSOAP::XML::Client::DotNetが好きですが、NuSOAPのようなソリューションの方がPerlソリューションよりも簡単だと思いました。

4

3 に答える 3

0

doterob が示唆しているように、WSDL にアクセスして使用できるようにするには、BizTalk が Web サービスをインターネットに公開する必要があります。そうすることで、彼らはインターネットに面したアドレスを公開します (例: http://web-service.biztalk.com/service.asmx?wsdl )

WSDL のコピーを取得したら、Web サービスで使用できるメッセージを作成し、Web サービスのインターネットに面したアドレスを使用するようにアプリケーションを構成します。WSDL に含まれるローカル ネットワーク アドレス (10.10.1.1) は、外部ネットワーク (つまりインターウェブ) ではなく、LAN からサービスを利用することを想定しています。

ここでは、BizTalk Web サービスをインターネット上で公開することによるセキュリティへの影響については触れませんが、これは推奨されるベスト プラクティスではありません。ただし、最小限の証明書ベースの認証で Web サービスを保護することをお勧めします。

于 2013-03-13T10:52:23.810 に答える
0

XML::Compile::WSDL11を使用して、エンドポイントをプライベート アドレスからパブリック アドレスに変更できました。

このようなもの:

my $wsdlfile = XML::LibXML->new->parse_file("http://$publicIP/wsdl");
my $wsdl = XML::Compile::WSDL11->new($wsdlfile);
my $call = $wsdl->compileClient(
    'operation',
    server => $publicIP # This change the server address to a specified address
);
于 2013-03-15T09:51:38.207 に答える
0

WSDL は、ブラウザからローカル マシンに組み込まれています。URLを入力すると、Asp.NetでWSDLにアクセスできます

http://10.10.1.1/xxxxx/yyyyyyyyyy.asmx?WSDL

エンドポイントは変更できます。Web サービスを呼び出すとき、資格情報を入力した後または前に特定の URL を入力する必要があります。

于 2013-03-07T15:51:03.363 に答える