如何将httpcontext对象传递给Web服务

时间:2012-08-20 17:21:08

标签: asp.net vb.net web-services service

如何将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

2 个答案:

答案 0 :(得分:3)

HttpContext不可串行化,因此不能以字符串形式发送。 HttpContext是一个具有其他复杂属性的复杂对象,因此如果你将它序列化它会相当大(这意味着发送数据的速度会慢很多)。

我认为最好将您需要的信息封装在自定义类中,然后将其发送给服务。

也就是说,创建一个具有可序列化的简单类型的类(字符串,整数,双精度等),并用您需要的信息填充它。

答案 1 :(得分:1)

您无法传递HttpContext ByValByVal表示按值,这意味着需要复制HttpContext的值才能传递给您的方法。由于它是一个[复杂]对象,你不能这样做。相反,您需要传递它ByRef,这意味着将对象的引用传递给您的方法,然后处理该引用。