我已经看过一些有关此主题的帖子,但它并没有帮助我解决我的问题。我有一个非常简单的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()属性。我尝试添加_但没有运气。
答案 0 :(得分:0)
您可以在WebService中创建一个包装器方法,并从它们调用内部类的方法,但我认为您有一个更大的问题。
Web服务本质上是无状态的。你调用它,它执行一些操作,返回结果,如果有的话就是这样。从内部类创建的对象看起来像是留在内存中并在Items
数组中累积元素。这不适用于WebService方法,也许您需要重新考虑您的设计。