2012-03-21 194 views
0

我正在创建一个简单的XML Web服务,并遇到了一些我无法解释的问题。.NET XML Web服务,使用类无法访问Web服务类

我的Web服务类的结构如下:

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


<System.Web.Services.WebService(Namespace:="http://www.mynamespace.com/")> _ 
<System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _ 
<ToolboxItem(False)> _ 
Public Class MyWS 
    Inherits System.Web.Services.WebService 

    <WebMethod()> _ 
    Public Function HelloName(Byval name as String) 
     return String.Concat("Hello",name) 
    End Function 

End Class 

使用调用我的方法内置的VS Web服务测试工具正常工作。

我在另一个解决方案中创建了另一个项目来测试使用Web服务。我为我的项目添加了一个Web引用并进行了设置,以便可以使用“localWS”引用我的Web服务。然后在我的消费类的页面加载事件中,我试图实例化我的web服务的对象:

Dim srv As New localWS.MyWS 

但没有“MyWS”式的发现。然而有一个localWS.MyWSSoapClient类。当我使用它时,我可以调用我的web方法。我的问题是,为什么我不能创建MyWS类的直接版本?在我读过的教程以及本书的示例中,.NET XML Web服务的示例消费类可以实例化它们正在使用的Web服务类的对象。

作为进一步的测试,我添加了一个新的web表单到我的web服务项目,并从那里我能够实例化一个MyWS类。

任何人都可以告诉我为什么我不能在我的消费代码中创建一个MyWS对象? MyWSSoapClient是否等同?任何建议将非常感激。谢谢!

回答

1

MyWS类是客户端服务器解决方案的服务器部分。它不应该由消费系统(客户端)访问。如果是这样,那么就没有理由将MyWS类的功能作为Web服务公开。

MyWSSoapClient类是在添加Web引用时从Web服务的元数据(WSDL)生成的。这是一个你的客户可以用来与你的web服务进行通信的类。