WCF服务参考不提供非异步方法

时间:2014-12-12 16:54:56

标签: c# wcf iis asynchronous

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

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

方法的一个例子是:

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

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

getNameAsync

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

有什么想法吗?

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

1 个答案:

答案 0 :(得分:0)

这是代码的生成方式。通常你会发现你在客户端代码中订阅的名为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;
    }
}