【问题标题】:.Net webservice, how to access...?.Net 网络服务,如何访问...?
【发布时间】:2008-10-21 23:42:19
【问题描述】:

注意:我只是在使用网络服务,我无法控制网络服务代码。

所以在 .net 2.0 中,我引用了 web 服务并在 web 服务命名空间中看到了一个类,比如 foobar。定义为:

public class foobar : System.Web.Services.Protocols.SoapHttpClientProtocol

但是在 .net 3.5 中,当我添加对同一个 Web 服务的引用时,我不再有这个 foobar 类可用。我确实看到了 foobarSoap,它是一个接口,它公开了上面 foobar 类中的所有方法。定义为:

public interface foobarSoap

但是它没有公开属性(原因很明显)。

我需要访问这些属性。我该怎么做?

【问题讨论】:

    标签: .net web-services soap


    【解决方案1】:

    您可以尝试使用 Web 服务描述语言工具 (Wsdl.exe) 来生成一个实际的类文件:

    wsdl.exe /language:cs http://www.example.com/FooService.wsdl

    您可以在MSDN Page 上获取有关WSDL Tool 的更多信息。

    【讨论】:

      【解决方案2】:

      我从 2005 年升级到 2008 年时遇到了类似的问题。我认为您缺少什么,当您单击“添加服务参考”时,会出现一个更新的对话框。单击底部的高级按钮,然后在出现的下一个对话框中,单击兼容性部分底部的添加 Web 引用按钮。然后你会得到你最可能习惯的对话框,并且会有标准的 2.0 代理类。

      【讨论】:

        【解决方案3】:

        我有一种偷偷摸摸的感觉,这些属性不会成为服务定义 (WSDL) 的一部分,这意味着您可能无法使用它们。如果可能,请尝试说服曾经维护服务的人员将属性公开为实际方法。

        您很可能无法访问这些属性,在这种情况下您可能只是运气不佳。对不起。

        我将尝试公开一个属性,然后我会在这里报告结果。

        编辑:无法使用 WCF 公开接口属性,它根本不会编译

        [ServiceContract]
        public interface IFooService
        {
            [OperationContract] // This is not allowed, it will not compile
            string Name { get; set; }
        }
        

        编辑:也不能使用 ASMX Web 服务来完成。 : (

        [WebService(Namespace = "http://tempuri.org/")]
        public class FooService : System.Web.Services.WebService
        {
            [WebMethod] // This is not allowed, it will not compile
            string Name { get; set; }
        }
        

        【讨论】:

          【解决方案4】:

          我刚刚创建了一个示例项目,并使用“添加服务引用”菜单为该服务创建了一个 Web 代理:

          http://www.xmlme.com/WSShakespeare.asmx
          

          Visual Studio 2008 基于 WSDL 生成一个接口和一个代理类。例如,我有一个实现 ShakespeareSoap 接口的类 ShakespeareSoapClient。

          它似乎工作正常。我是不是错过了什么。

          【讨论】:

            猜你喜欢
            • 2014-08-03
            • 1970-01-01
            • 1970-01-01
            • 2012-06-28
            • 1970-01-01
            • 2011-07-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多