1

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
4

2 に答える 2

3

HttpContext はシリアル化できないため、文字列として送信できません。HttpContext は他の複雑なプロパティを持つ複雑なオブジェクトであるため、シリアライズするとかなり大きくなります (つまり、データの送信が非常に遅くなります)。

代わりに、必要な情報をカスタム クラスにカプセル化して、それをサービスに送信する方がよいと思います。

つまり、シリアル化できる単純な型 (string、int、double など) を持つクラスを作成し、必要な情報を入力します。

于 2012-08-20T17:24:19.223 に答える
1

を渡すことはできませんHttpContext ByValByValは値渡しを意味します。これはHttpContext、メソッドに渡すために の値をコピーする必要があることを意味します。[複雑な]オブジェクトなので、それはできません。代わりに、それを渡す必要がありますByRef。つまり、オブジェクトへの参照をメソッドに渡し、その参照を処理します。

于 2012-08-20T17:24:46.753 に答える