【问题标题】:Getting an Instance of your Web Service Reference获取 Web 服务参考的实例
【发布时间】:2011-01-07 07:26:24
【问题描述】:

所以我相信您对 .NET 2.0 vanilla Web 服务(不是 WCF)所做的一切如下:

1) 添加您的服务参考。就我而言,我使用的是 PayPal WSDL 2) 在您可以使用任何代理类之前,您必须首先创建您的服务引用的实例 3) 创建服务引用的实例后,只需执行 [servicereference].ProxyClassName.Method 或您尝试从这些类访问的任何内容

对吗?

好的,我试过了。我添加了一个服务引用并将其命名为 SandboxSoapAPI。这就是您在我的 C# 项目中的引用下看到的内容。

在代码中我尝试了这个:

SandboxSoapApi 参考 = new SandboxSoapApi();

但它无法识别 SandboxSoapAPI。难道我做错了什么?我只想开始使用 PayPal 调用类方法等,但我似乎无法做到这一点。

如果我没记错的话,从 .NET 2.0+ 开始,它会通过 Http 处理 SOAP Web 服务引用的实际请求的低级发送?

【问题讨论】:

    标签: c# web-services paypal


    【解决方案1】:

    SandboxSoapAPI 不是 SOAP 客户端代理类型名称。这是一个命名空间。

    要检查这一点,在 VS.NET 中勾选“显示所有文件”并深入查看 Web 引用,打开 Reference.cs 文件,您将看到 SandboxSoapApi 是一个子命名空间(不是您的 SOAP 客户端代理名称!)项目的根命名空间。

    所以要么使用完全限定名称:

    SandboxSoapAPI.YourProxyType client = new SanboxSoapAPI.YourProxyType();
    

    或者在您需要 SOAP 客户端的代码中使用 using SandboxSoapAPI;

    【讨论】:

    • 谢谢。所以我确实在那个 Reference.cs 中看到了 [projectnamespace].WebServiceReferenceName 并且我在我试图创建该实例的 C# 类中确实有一个 using [projectnamespace].WebServiceReferenceName。将鼠标悬停在 SandboxSoapApi 上时收到的消息是“预期类型名称,但找到命名空间名称”
    • 啊,谢谢。我不知道客户端还有一个额外的 proxyType。我以为引用本身就是一个对象。
    • 你帮了我很多忙。我没有推断出所有这些,尽管是的,我可以查看 Reference.cs 我仍然不会推断只是去寻找服务中的一些客户端代理类。我希望 .NET 2.0+ Web 服务上有更好的文档。没有太多行话。他们使用诸如异步调用之类的东西。好吧,我不知道它还推断出它在幕后完成了请求的所有低级构建。
    • 另外,并且可能令人感兴趣的是,在 VS.NET 中的“添加 Web 引用”功能只是简单地包装了 wsdl.exe 命令行实用程序,该实用程序生成代理客户端和数据类型。如果您愿意,您同样可以手动将生成的 .cs 文件添加到您的项目中。你可能想玩一下wsdl.exe。它将扩大您对正在发生的事情的理解。干杯!
    • 是的,谢谢。我了解 wsdl 创建代理类。但是在您的示例中,您实际上是在谈论肥皂客户端……而不仅仅是任何代理类。这是两件不同的事情。
    猜你喜欢
    • 2011-01-10
    • 2014-07-19
    • 1970-01-01
    • 1970-01-01
    • 2010-11-15
    • 1970-01-01
    相关资源
    最近更新 更多