2011-02-08 16 views
0

私は現在、同じプロジェクト内にWebサービスも含むWebアプリケーションプロジェクトを持っています。私は現在、非同期にWebサービスを呼び出す必要があります。 Webサービスを同じプロジェクト内のWeb参照として追加していないため、デリゲートを使用してWebサービスメソッドを呼び出そうとしましたが、「HttpContextを使用できません」という例外があります。私はWebサービスのメソッド呼び出しでApplicationプロパティにアクセスしようとしたときに "ASP.NETリクエスト"を返します。HttpContextを利用できません - 非同期でWebサービスを呼び出す

Web Method in MyWebServices Class 
Public Function ProcessRequest() As Boolean 
    If Application(STRING_KEY) Is Nothing Then 'Exception happens here' 
    Return True 
    Else 
    Return False 
    End If 
End Sub 

.ASPX Codebehind File 
Public Delegate Function ProcessRequestDelegate() As Integer 

Protected Sub btnSender_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles sender.Click 
    Dim del As ProcessRequestDelegate 
    del = New ProcessRequestDelegate(AddressOf ProcessRequest) 
    del.BeginInvoke(null, null) 
End Sub 

Protected Function ProcessRequest() As Boolean 
    Dim services As MyWebService 
    services = New MyWebService() 
    Return services.ProcessRequest() 
End Function 

私がここでやろうとしているのは、非同期的にWebメソッドを呼び出す正しい方法ですか?

おかげで、 Javid

答えて

1

は、Webサービスクラスには、Web参照とのprocessRequestは、WebMethod属性で装飾されなければならないメソッドを介してアクセスする必要があります。

Webサービスを通常のクラスとして、同じプロジェクトで使用している場合、またはWebサーバーを経由していない通常のクラスライブラリと同じように別のプロジェクトからHttpContext.Currentオブジェクトがnullの場合。

関連する問題