我正在尝试创建一个支持异步调用的 WCF 服务。我遵循了我能找到的所有示例和教程,它们都具有一种同步方法的习惯模式,以及异步开始和结束,例如:
[OperationContract(AsyncPattern = false)]
string GetData(int value);
[OperationContract(AsyncPattern = true)]
IAsyncResult BeginGetData(int value, AsyncCallback callback, object asyncState);
string EndGetData(IAsyncResult result);
但是,无论我在客户端做什么,都只会调用同步的 GetData。Fiddler 告诉我消息总是一样的:
<s:Envelope
xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><GetData
xmlns="http://tempuri.org/"><value>0</value></GetData></s:Body></s:Envelope>
当我删除同步 GetData 接口时,现在可以正确调用 async 方法。
这是正常行为吗?我还应该做些什么来支持方法的同步和异步版本?