Delphi 7 ISAPI Webサービスをインストールする
-
28-09-2020 - |
質問
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サービスは他の男の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フォルダにファイルをコピーする必要はありません。それは私のめちゃくちゃでした。
あなたの助けをありがとうございました。)