質問

Delphi 7でISAPI Webサービスを開発し、C#アプリケーションで消費できるようにサーバーにインストールする必要があります。

ISAPIのDLLをフォルダにコピーし、サーバのIISに仮想ディレクトリを作成しました。

ブラウザからWebサービスを呼び出すとき( http://localhost/webservice/ws.dll )Delphiがデフォルトで作成するWebサービスのWebサイトは表示されます。 C#アプリケーションでWeb参照を作成した場合、参照は正常に上記のURLを使用してロードされます。

問題は、ステップバイステップでC#アプリケーションをデバッグすると、Delphi Webサービス内の関数を呼び出しますが、何もしません。 Webサービスは何も返しません。

私は前に同様の問題を覚えていたのを覚えていました、そしてそれを修正する方法は、私がWebサービスをインストールしていたサーバーのSystem32フォルダにコピーすることでしたが、コピーする必要があるファイルを覚えていません。そしてそれが実際に問題を解決するならば。

Webサービスの消費.NETアプリケーション内で例外をスローしません。それは何もしません。関数は何も戻りません。

任意のアイデア?

役に立ちましたか?

解決

問題は以下の通りです。

私のWebサービスは他の男のDelphi Webサービスを消費するために使用されます。私は他の男のDelphi Webサービスを消費する必要があるですが、それが開発されたGuy、それが.NETがサポートしていない複雑なデータ型を使用する。だから私は翻訳者として行動するために私のWebサービスを開発しなければなりませんでした。私は、その1つの.NETアプリケーションが他の男のWebサービスを消費するためだけに私のDelphi Webサービスを消費するという点で.NETサポートされているデータ型を使用しました。それは一種の厄介ですが、私は他の人を標準的なデータ型を使うよう説得することができませんでした。 私のWebサービスには、iniファイルから他の男のWebサービスからSOAP URLを取り出すルーチンがあります。そのiniファイルを特定のパスに探すためにそのルーチンを開発したことを覚えていませんでした。

ルーチンは次のようになります。

 ifParams:=TIniFile.Create('C:\BancorTranslator\BancorTranslator.ini');
 HostAnula:= ifParams.ReadString('GLOBAL','HOSTANULA','');
 HostDepos:= ifParams.ReadString('GLOBAL','HOSTDEPOS','');
 HostTrans:= ifParams.ReadString('GLOBAL','HOSTTRANS','');
 HostConsu:= ifParams.ReadString('GLOBAL','HOSTCONSU','');
.

私は別の場所にiniファイルを持っていましたので、私のWebサービスが他の男のWebサービスを消費しようとしたとき、私のWebサービスで設定されたSOAP URLは空白でした。ルーチンを変更して、Webサービスがホストされているのと同じフォルダ内のINIファイルを探すように変更されました。 System32フォルダにファイルをコピーする必要はありません。それは私のめちゃくちゃでした。

あなたの助けをありがとうございました。)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top