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