【问题标题】:Consume WCF service programmatically in Windows Phone 8在 Windows Phone 8 中以编程方式使用 WCF 服务
【发布时间】:2013-03-04 14:19:18
【问题描述】:

我希望能够在我的 Windows Phone 8 应用中使用 WCF 服务端点。

在 Google 上搜索只显示我必须右键单击 WP8 项目,选择“添加服务引用”...在我的情况下这不是一个可行的解决方案。

  • 我希望能够在我的 Windows Phone 8 应用程序中使用 WCF 服务,以编程方式

  • 在 Windows Phone 8 应用程序中的哪里定义我的客户端端点证书?

想象一下,我想制作一个 Windows Phone 8 应用程序,它应该能够连接到托管在另一台设备(即计算机)上的 WCF 服务。然后 WP 用户需要输入该计算机的主机名才能连接到 WCF 服务。

【问题讨论】:

  • 你能详细说明一下“咩!” ?
  • 好的,但是为什么呢?代理生成器未正确处理您要做什么?
  • 抱歉不是很清楚。现在在对@cad 答案的评论中对此进行了解释。
  • @KristianB:我的建议是您使用相关信息编辑您的问题(即使它已经在我的回答的评论中)

标签: c# wcf windows-phone-8 windows-phone


【解决方案1】:

我建议您使用“添加服务引用”来生成代理类。 DTO 和客户端代理将自动生成。您将受益于生产力、类型安全和名称检查的巨大提升。

然后您可以在运行时使用适当的构造函数指定 url。例如:

private MyServiceClient GetMyServiceClient(string url)
{
  Uri uri = new Uri(url);
  BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.None);
  EndpointAddress address = new EndpointAddress(uri);
  MyServiceClient client = new MyServiceClient(binding, address);
  return client;
}

(MySericeClient 是生成的代理)

.config 是可选的,你可以删除它。

【讨论】:

    【解决方案2】:

    当您添加服务引用时,您的 WP8 项目会自动生成一个包装 WCF 服务的代理类。然后你的代码使用这个代理类。

    另一种方法是手动创建代理类,相信我,如果可以的话,你想避免这种情况......

    【讨论】:

    • 想象一下,我想制作一个 Windows Phone 8 应用程序,它应该能够连接到托管在另一台设备(即计算机)上的 WCF 服务。然后 WP 用户需要输入该计算机的主机名才能连接到 WCF 服务。
    • 在普通应用中,主机名存储在 app.config 中。我相信您可以覆盖那里读取的主机名并使用您手动向用户请求的主机名...
    【解决方案3】:
    1. 仅当您使用其无参数构造函数时,添加服务引用生成的代理客户端类才会使用配置中的主机名(端点地址)。当然,您可以在运行时手动指定端点地址。
    2. 您可以创建服务契约可移植类库并在客户端和服务器之间共享。然后你不必生成代理类,但你使用 ChannelFactory API:http://www.c-sharpcorner.com/UploadFile/ff2f08/channel-factory-in-wcf/

    【讨论】:

      猜你喜欢
      • 2013-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-30
      相关资源
      最近更新 更多