我有一个包含以下方法的WCF服务。服务中的所有方法都是异步的,编译得很好。
public async Task<Boolean> ValidateRegistrationAsync(String strUserName)
{
try
{
using (YeagerTechEntities DbContext = new YeagerTechEntities())
{
DbContext.Configuration.ProxyCreationEnabled = false;
DbContext.Database.Connection.Open();
var reg = await DbContext.aspnet_Users.FirstOrDefaultAsync(f => f.UserName == strUserName);
if (reg != null)
return true;
else
return false;
}
}
catch (Exception)
{
throw;
}
}
我的客户端应用程序设置为使用“允许生成异步操作”复选框访问WCF服务,并且它生成了代理就好了。
尝试使用以下代码从我的客户端调用此WCF服务方法时,我收到上述主题错误。请注意,我知道错误消息的含义,但这是我第一次尝试从客户端调用WCF服务中的异步任务。
Task<Boolean> blnMbrShip = db.ValidateRegistrationAsync(FormsAuthentication.Decrypt(cn.Value).Name);
如何正确调用该方法以便设计时编译错误消失?
答案 0 :(得分:1)
WCF代理是旧的;尝试使用较新的(VS2012 / VS2013)代理生成器重新创建代理。
具体来说,它正在生成Event-based Asynchronous Pattern个端点,您需要Task-based Asynchronous Pattern个端点。
如果这是针对Silverlight客户端,则自动生成的代理将拒绝创建TAP方法。在这种情况下,你需要编写自己的包装器(pretty easy,只是相当繁琐)。