我正在创建一个简单的XML 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类。当我使用它时,我可以调用我的网络方法。我的问题是,为什么我不能创建MyWS类的直接版本?在我阅读的教程中,在我的书中,使用.NET XML Web服务类的示例可以实例化他们正在使用的Web服务类的对象。
作为进一步的测试,我在我的Web服务项目中添加了一个新的Web表单,从那里我可以实例化一个MyWS类。
有人能告诉我为什么我不能在我的消费代码中创建一个MyWS对象吗? MyWSSoapClient是否相同?任何建议将非常感谢。谢谢!
答案 0 :(得分:1)
MyWS类是客户端 - 服务器解决方案的服务器部分。它不应该由消费系统(客户端)访问。如果是,则没有理由将MyWS类的功能公开为Web服务。
当您添加Web引用时,将根据Web服务的元数据(WSDL)生成MyWSSoapClient类。这是一个客户可以用来与您的网络服务进行通信的课程。