2011-02-08 4 views
0

J'ai actuellement un projet d'application Web qui inclut également des services Web dans le même projet. J'ai actuellement l'obligation d'appeler le service Web de manière asynchrone. Comme je n'ai pas ajouté le service Web en tant que référence Web au sein du même projet, j'ai essayé d'appeler la méthode de service Web en utilisant des délégués et je vois une exception "HttpContext n'est pas disponible Cette classe ne peut être utilisée que dans le contexte une requête ASP.NET "lorsque j'ai essayé d'accéder à la propriété Application dans mon appel de méthode de service Web.HttpContext n'est pas disponible - Appel de Webservice de manière asynchrone

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 

Est-ce que je suis en train de faire ici est la bonne façon d'invoquer une méthode web asyncrohously?

Merci, Javid

Répondre

1

la classe de service Web doivent être accessibles via Web de référence et la méthode ProcessRequest doivent être décorées avec l'attribut WebMethod. Si vous utilisez le service Web en tant que classe normale dans le même projet ou à partir d'un autre projet comme s'il s'agissait d'une bibliothèque de classes normale, vous ne passez pas par le serveur Web, l'objet HttpContext.Current est null.

Questions connexes