2011-02-08 161 views
0

我目前有一个Web应用程序项目,其中也包含同一项目中的Web服务。我目前有要求异步调用Web服务。因为我没有在同一个项目中添加Web服务作为Web引用,所以我尝试使用委托来调用Web服务方法,并且看到一个异常“HttpContext不可用,该类只能用于一个ASP.NET请求“,当我尝试访问我的Web服务方法调用中的应用程序属性时。HttpContext不可用 - 异步调用Webservice

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 

就是我想在这里做的是asyncrohously调用Web方法的正确方法?

感谢, Javid

回答

1

Web服务类应该通过Web引用来访问和方法的ProcessRequest应与WebMethod属性装饰。

如果您使用Web服务作为同一项目或其他项目中的普通类,就好像它是普通类库一样,您不会通过Web服务器,因此HttpContext.Current对象为null。