1

delphi7でisapiWebサービスを開発しましたが、ac#アプリケーションで使用できるようにサーバーにインストールする必要があります。

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

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

問題は、C#アプリケーションを段階的にデバッグすると、delphi Webサービス内の関数が呼び出されても、何も実行されないことです。Webサービスは何も返しません。

以前に同様の問題が発生したことを覚えています。それを修正する方法は、Webサービスをインストールしていたサーバーのsystem32フォルダーにいくつかのdelphi dllをコピーすることでしたが、コピーする必要のあるファイルとその場合は覚えていません。実際に問題を解決します。

Webサービスを使用しても、.netアプリケーション内で例外はスローされません。何もしません。関数は何も返しません。

何か案は?

4

1 に答える 1

1

問題は次のとおりです。

私のWebサービスは、他の人のdelphiWebサービスを利用するために使用されます。他の人のdelphiWebサービスを使用する必要がある.NETアプリケーションがあるため、このWebサービスを開発する必要がありましたが、それを開発した人は、.NETがサポートしていない複雑なデータ型を使用していました。そのため、翻訳者として機能するWebサービスを開発する必要がありました。私はその1つで.NETがサポートするデータ型を使用し、.NETアプリケーションは他の人のWebサービスを利用するためだけに私のdelphiWebサービスを利用します。ちょっと面倒ですが、他の人に標準のデータ型を使用するように説得することはできませんでした。私のWebサービスには、他の人のWebサービスからのSOAPURLをiniファイルから取得するルーチンがあります。特定のパスでその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サービスで構成されているSOAPURLが空白になりました。Webサービスがホストされているのと同じフォルダーでiniファイルを検索するようにルーチンを変更しましたが、正常に動作するようになりました。system32フォルダー内のファイルをコピーする必要はありません。それは私の混乱でした。

助けてくれてありがとう;)

于 2010-07-24T15:50:34.950 に答える