0

我有一个包含以下方法的 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);

我需要做什么才能正确调用该方法,以便设计时编译错误消失?

4

1 回答 1

1

WCF 代理是旧的;尝试使用更新的(VS2012/VS2013)代理生成器重新创建代理。

具体来说,它正在生成基于事件的异步模式端点,您需要基于任务的异步模式端点。

如果这是针对 Silverlight 客户端,那么自动生成的代理将拒绝创建 TAP 方法。在这种情况下,您需要编写自己的包装器(这很容易,只是相当乏味)。

于 2013-11-08T22:07:18.973 回答