ASP.NET 2010将自定义类方法公开给Web服务客户端

时间:2014-04-07 18:14:42

标签: asp.net visual-studio-2010 web-services class

我已经看过一些有关此主题的帖子,但它并没有帮助我解决我的问题。我有一个非常简单的ASP.NET 2010 Web服务,但我无法从我的客户端应用程序中获取自定义类中的方法。下面是我的Web服务(剥离)。

Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports System.ComponentModel

' To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
' <System.Web.Script.Services.ScriptService()> _
<System.Web.Services.WebService(Namespace:="http://tempuri.org/")> _
<System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<ToolboxItem(False)> _
Public Class Args
    Inherits System.Web.Services.WebService

    <WebMethod()> _
    Public Function ProcessArgs(Args As Arguments) As String
        Return Args.Items(0).Value
    End Function
End Class

这是我的自定义类

Public Class Arguments
    Public Items() As Argument

    Public Class Argument
        Public Name As String
        Public Value As String
    End Class

    Public Function Count() As Long
        Return Items.Count
    End Function

    Public Function Add(Name As String, Value As String) As Boolean
        Try
            Dim lngIndex As Long = 0
            Dim newArg As New Argument

            newArg.Name = Name
            newArg.Value = Value

            If Not Items Is Nothing Then lngIndex = Items.Count
            ReDim Preserve Items(lngIndex)
            Items(Items.Count() - 1) = New Argument
            Items(Items.Count() - 1) = newArg
            Return 0

        Catch ex As Exception
            Throw New Exception(ex.Message)
        End Try
    End Function

End Class

我将Web引用添加到我的客户端应用程序中。我的客户代码是:

Dim args As New csWSArgs.Arguments

我无法访问Add(...)方法或Count()属性。我尝试添加_但没有运气。

1 个答案:

答案 0 :(得分:0)

您可以在WebService中创建一个包装器方法,并从它们调用内部类的方法,但我认为您有一个更大的问题。

Web服务本质上是无状态的。你调用它,它执行一些操作,返回结果,如果有的话就是这样。从内部类创建的对象看起来像是留在内存中并在Items数组中累积元素。这不适用于WebService方法,也许您需要重新考虑您的设计。