我最近在C#中创建了一个WCF服务,并将其托管在运行IIS 8的服务器上。
在本地测试时,一切都很完美,我能够成功地测试我的所有方法。我的问题出现在我尝试在单独的项目中向该WCF服务添加服务引用时,此时它公开的唯一方法是async
方法,即使我从未将我的任何方法实现为异步。
方法的一个例子是:
public string getName(User user)
{
return user.name;
}
当我在Visual Studio中测试它时会有一些简单的事情,但是当我在IIS中托管它并尝试添加服务引用时,我似乎可以调用或有权访问的唯一方法是:
getNameAsync
为什么它会这样做,即使我从来没有将其实现为async
?最重要的是,当我首先添加服务引用时,我无法取消选中“生成异步方法”。
有什么想法吗?
编辑:作为参考,我试图在引用该服务的Windows 8.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;
}
}