【问题标题】:Type 'System.Threading.Tasks.Task`1[System.String]' cannot be serialized类型“System.Threading.Tasks.Task`1[System.String]”无法序列化
【发布时间】:2011-12-06 01:07:05
【问题描述】:

根据以下文章,我将我的服务合同定义为

http://blogs.msdn.com/b/endpoint/archive/2010/11/13/simplified-asynchronous-programming-model-in-wcf-with-async-await.aspx

[ServiceContract]
public interface IServiceContract
{
    [OperationContract]
    Task<string> HelloAsync(string name);
}

但是,当我尝试生成代理时,我收到消息 Type 'System.Threading.Tasks.Task`1[System.String]' cannot be serialized。

我错过了什么吗?

【问题讨论】:

  • 您使用的是异步 CTP 吗?该语法还不是 C# 的一部分
  • @JohnSaunders 是的,我正在使用 ctp

标签: wcf asynchronous


【解决方案1】:

仅在 .NET Framework 4.5 版中提供对基于任务的异步操作的支持,除非您使用的是 9 月中旬提供的开发者预览版,否则这将不起作用。

【讨论】:

  • 这不适用于异步 CTP 吗?我在 VS 2010 SP1 中使用 Async For
  • 不,它在该 CTP 中不可用。它仅在 .NET 4.5 中可用。
【解决方案2】:

这是一个很好的答案:http://mylifeandcode.blogspot.com/2012/12/the-cause-and-solution-for.html

似乎需要重新生成代理类——而不是“生成基于任务的操作”需要选择“生成异步操作”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-14
    • 2017-11-24
    • 1970-01-01
    • 2017-03-10
    • 2016-09-15
    • 1970-01-01
    相关资源
    最近更新 更多