.NET XML Web 服务,消费类无法访问 Web 服务类
Posted
技术标签:
【中文标题】.NET XML Web 服务,消费类无法访问 Web 服务类【英文标题】:.NET XML web service, consuming class not able to access web service class 【发布时间】:2012-04-05 22:28:50 【问题描述】:我正在创建一个简单的 XML 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 是否等效?任何建议将不胜感激。谢谢!
【问题讨论】:
【参考方案1】:MyWS 类是您的客户端-服务器解决方案的服务器部分。消费系统(客户端)不应访问它。如果是,那么就没有理由将 MyWS 类的功能公开为 Web 服务。
MyWSSoapClient 类是在您添加 Web 引用时从您的 Web 服务的元数据 (WSDL) 生成的。这是一个类,您的客户可以使用它与您的网络服务进行通信。
【讨论】:
以上是关于.NET XML Web 服务,消费类无法访问 Web 服务类的主要内容,如果未能解决你的问题,请参考以下文章
C# webservice 引用 dll 无法访问外部 xml 文件