.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 服务类的主要内容,如果未能解决你的问题,请参考以下文章

来自 Web 服务消费的 DataSet XML 响应

C# webservice 引用 dll 无法访问外部 xml 文件

使用 JQuery 访问 ASP.net Web 服务时出错 - JSONP

使浏览器无法访问 Web 服务?

WEB-INF

使用 iOS 5 应用程序从 .Net Web 服务消费和解析 JSON 数据