【问题标题】:Cannot implicity convert type void to System.Threading.Tasks.Task<bool>无法将类型 void 隐式转换为 System.Threading.Tasks.Task<bool>
【发布时间】:2013-11-08 21:50:29
【问题描述】:

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

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

【问题讨论】:

  • 您的代表为 572。您发布这种格式错误的代码的借口为零。请修复它。
  • 你看过生成的代理代码的签名了吗?
  • Jon,生成的代理代码如下: public void ValidateRegistrationAsync(string strUserName) { this.ValidateRegistrationAsync(strUserName, null);我期待它返回一个布尔值。不知道是WCF服务方法不对还是客户端代码不对。 }
  • 大卫,格式化代码有什么问题? WCF 方法正是它在 Visual Studio 中使用 CTRL-K 格式的方式,而客户端代码只是一行也使用 CTRL-K 格式化。所以我不知道你的问题是什么......

标签: c# multithreading wcf asynchronous task


【解决方案1】:

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

具体来说,它正在生成Event-based Asynchronous Pattern端点,你需要Task-based Asynchronous Pattern端点。

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

【讨论】:

  • Stephen,我使用的是 VS 2013。这不适用于 Silverlight 项目。我只是浏览了基于任务的异步模式链接,但不确定我还需要做什么。生成服务参考时是否需要更改设置?如果是这样,请您提供更多详细信息。非常感谢你...
  • @sagesky36:您应该能够创建代理。默认情况下应该选择异步,它应该生成 TAP 端点。您能否创建一个最小的复制项目并上传它(例如,ge.tt?)
  • 斯蒂芬,非常感谢您帮助我。我一直忙于工作,还没有机会回到这个项目。我会照你说的做,一有机会就上传。再次,非常感谢。
  • Stephen,再次感谢,但我能够通过重新启动我的机器、启动 VS 2013、清理解决方案,然后添加服务来创建代理。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-16
  • 2014-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-17
  • 1970-01-01
相关资源
最近更新 更多