【问题标题】:WCF Service Reference not giving non-async methodsWCF 服务参考未提供非异步方法
【发布时间】:2014-12-12 16:54:55
【问题描述】:

我最近用 C# 制作了一个 WCF 服务,并将其托管在运行 IIS 8 的服务器上。

在本地测试时一切正常,我能够成功测试我的所有方法。当我尝试在单独的项目中添加对该 WCF 服务的服务引用时,我的问题出现了,此时它公开的唯一方法是 async 方法,即使我从未将我的任何方法实现为异步。

一个方法的例子是:

public string getName(User user)
{
     return user.name;
}

当我在 Visual Studio 中测试它时,这种简单的方法会起作用,但是当我在 IIS 中托管它并尝试添加服务引用时,我似乎可以调用或有权访问的唯一方法是:

getNameAsync

即使我从来没有将它实现为async,为什么它会这样做?最重要的是,当我首先添加服务引用时,我无法取消选中“为异步生成方法”。

有什么想法吗?

编辑:作为参考,我正在尝试在引用该服务的 Windows 8.1 应用程序中测试这些方法。

【问题讨论】:

  • 你的客户是silverlight吗?
  • 你解决过这个问题吗?

标签: c# wcf iis asynchronous


【解决方案1】:

这就是代码的生成方式。通常,您还会发现您在客户端代码中订阅的名为 GetNameCompleted 的事件(在创建方法 ClientGetNameCompleted 之后):

client.GetNameCompleted += ClientGetNameCompleted ;

在此方法中,您将使用服务结果。类似的东西:

private void ClientGetNameCompleted (object sender, GetNameCompletedEventArgs e)
{
    if (e.Result != null)
    {
        // use the e.Result that contains the returned data;
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-27
    • 1970-01-01
    • 2014-04-30
    • 2014-07-09
    • 1970-01-01
    • 1970-01-01
    • 2010-12-24
    • 2014-09-12
    相关资源
    最近更新 更多