2009-07-01 29 views
1

ASP.NET Webアプリケーションから非同期にWebサービスを実行しようとしています。この特定のWebサービス(.asmx)は、Webアプリケーションと同じプロジェクトに属します。私は、私は別のWebアプリケーションからWebサービスを参照するとき、私は非同期的に以下のコードを使用してWebサービスを呼び出すことができることに気づいた:ASP.NET - 非同期Webサービス

TestService service = new TestService(); 
service.TestMethod(); 

をしかし、私は別のWebアプリケーションを介してWebサービスを参照している場合、私は気づきます

ServiceProxy.TestService service = new ServiceProxy.TestService();   
service.TestMethodAsync(); 

トリックがある、私は非同期的に自分のWebサービスと同じアプリケーションであるWebページからWebサービスを実行したい:私は、非同期的に次のコードを使用して、それを実行するためのオプションを持っていること。これは可能ですか?もしそうなら、どうですか?

私のWebサービスを別のプロジェクトに入れることなく可能ですか?

ありがとう、

+0

最初のコードサンプルは、_synchronously_メソッドを同じプロジェクト内から呼び出す例です。問題の状態とは非同期ではありません。 – GBegen

+0

いいえ、それは悪いです。私の答えを見てください。 –

+0

OPがWebService実装クラスを直接使用していて、Webサービスとして呼び出すのではないことがわかりましたが、明らかに同期しているときに、非同期呼び出しと書かれているような質問がありました。 – GBegen

答えて

0

Webサービスと同じアプリケーションを引き続き参照できますか?

2

まず、Webサービスを別のプロジェクトに配置することをお勧めします。あなたが呼ばれる

第二には、:

TestService service = new TestService(); 
service.TestMethod(); 

あなたは、彼らが同じプロジェクトにあったので、あなたを可能にした罠に落ちました。あなたはTestMethodを直接呼び出していました。これはWebサービスコールではなく、TestMethodへの直接呼び出しです。

サービスを別のプロジェクトに配置し、Web参照またはサービス参照を使用してWebアプリケーションからアクセスすることをお勧めします。

EDIT:これは同じアプリケーションに保存できますが、引き続き混乱する可能性があります。それをWebサービスとして呼び出す場合は、常にWeb参照またはサービス参照を使用する必要があります。

同じアプリケーションの一部であれば、それはなぜWebサービスですか?

0

混乱を避けるために、Webサービスメソッドを直接呼び出してはいけません。 Webメソッドのリクエストに応答して、ASP.Netによって呼び出されるメソッドをそのままにします。

ただし、Webメソッドの実装を別のクラスに移すことができます。このクラスは、他のときにWebサービスクラスとWebアプリケーションの両方によってインスタンス化され呼び出されます。そのクラスを非同期的に呼び出す場合は、デリゲートを作成し、BeginInvoke()とEndInvoke()を使用する必要があります。

関連する問題