如何从客户端代理调用wcf方法

时间:2010-06-16 15:40:37

标签: c# wcf

我创建了一个WCF服务,工作正常,现在我想在客户端应用程序中使用它。 使用SVCutil.exe我为该服务生成了代理和aap.settings并将其添加到客户端sln(控制台应用程序)

但问题是我无法访问wcf方法。

        using System.ServiceModel;

            namespace WCFClient
                    {
                     class Program
                     {
                     static void Main(string[] args)
                    {

                          Program p = new Program();
                         p. // not getting the wcf methods

                    }
                  }
                  }

我做错了什么?

1 个答案:

答案 0 :(得分:1)

取决于您的服务如何调用。当你创建服务引用时,你给它一个命名空间名称 - 在该命名空间中,应该有一个名为(yourservicename)的类客户端 - 实例化其中一个并开始运行。

您应该在服务参考下找到这些文件 - 如果您单击解决方案资源管理器中的“显示所有文件”按钮,您将开始在服务引用下看到大量文件 - 尤其应该是{{ 1}}。这些类在该文件中定义 - 您可以检查它,它是一个常规的C#文件。

更新:如果您使用Reference.cs创建代理,则根据您与svcutil.exe一起使用的选项,您还应该获得包含所需类的.cs文件。

svcutil

将在您运行此命令的目录中创建一个名为svcutil http://yourserver/yourservice (your WSDL name).cs的文件。

您还可以为C#文件指定文件名:

output.config

然后您的文件名为svcutil http://yourserver/yourservice /out:MyService.cs

SvcUtil有一个的选项 - 无法解释所有这些选项,与他们一起玩,阅读MSDN文档。

同样,其中一个将被称为MyService.cs。在项目中包含* .cs文件,检查命名空间,创建(your service name)Client类的实例并使用它来调用WCF服务。

示例:

  • 从网址抓取信息

    .....Client
  • 在项目中包含生成的svcutil http://www.ecubicle.net/iptocountry.asmx?wsdl /out:IP2CountryClient.cs ;默认情况下,该文件中的类没有特定的命名空间,因此它们是全局可见的

  • 实例化客户端类IP2CountryClient.cs

    iptocountrySoapClient
  • 通话方法 - 例如这一个在这里:

    iptocountrySoapClient  client = new iptocountrySoapClient();