如何将httpcontext.current对象传递给Web服务并在服务中使用该对象,我收到一条错误消息,说它正在期待一个字符串 - 这一定是可能的吗?
Imports System.Web
Imports System.Web.Services
Imports System.Web.Services.Protocols
<WebService(Namespace:="http://tempuri.org/")> _
<WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Public Class WebService
Inherits System.Web.Services.WebService
<WebMethod()> _
Public Sub doThis(ByVal HC As HttpContext)
'do something
End Sub
End Class
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim s As test2.WebService = New test2.WebService
s.doThis(HttpContext.Current)
End Sub
答案 0 :(得分:3)
HttpContext不可串行化,因此不能以字符串形式发送。 HttpContext是一个具有其他复杂属性的复杂对象,因此如果你将它序列化它会相当大(这意味着发送数据的速度会慢很多)。
我认为最好将您需要的信息封装在自定义类中,然后将其发送给服务。
也就是说,创建一个具有可序列化的简单类型的类(字符串,整数,双精度等),并用您需要的信息填充它。
答案 1 :(得分:1)
您无法传递HttpContext
ByVal
。 ByVal
表示按值,这意味着需要复制HttpContext
的值才能传递给您的方法。由于它是一个[复杂]对象,你不能这样做。相反,您需要传递它ByRef
,这意味着将对象的引用传递给您的方法,然后处理该引用。