System.Threading.Tasks.Task - 无法序列化,因为它没有无参数构造函数。

时间:2011-10-28 15:36:22

标签: wcf api c#-4.0 task

我目前正在使用WCF Web API,它在同步任务中运行良好。 但是,当我尝试使用任务/任务执行异步操作时,如下所示:

    [WebGet(UriTemplate = "landmark")]
    Task<IEnumerable<Closest>> GetLandmarkAsync(float latitude, float longtitude)
    {
        return Task.Factory.StartNew(() => CalculateClosestThing(latitude,     longtitude));
    }

我收到此错误:

System.Threading.Tasks.Task`1[System.Collections.Generic.IEnumerable`1[ContentRepository.Data.Entities.Closest]] cannot be serialized because it does not have a parameterless constructor. 

现在,我做的第一件事是检查Closest Class并添加一个无参数构造函数,如下所示:

public class Closest
{
    public Closest() { }

    public double Distance { get; set; }
    public string Name { get; set; }
}

但我仍然遇到同样的错误。我已经尝试了所有的东西,显然在课堂上有一个无参数的构造函数。有没有人经历过这个?有什么想法吗?

2 个答案:

答案 0 :(得分:2)

确保您新建 WebApiConfiguration obj(从HttpConfiguration派生)并将其设置为默认的Http配置,并在主机中调用 routes.SetDefaultHttpConfiguration()(我正在使用MVC主机。)

我遇到了与从HttpConfiguration切换到WebApiConfiguration之前相同的问题。

有关详细信息,请参阅here.

答案 1 :(得分:0)