我目前正在使用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; }
}
但我仍然遇到同样的错误。我已经尝试了所有的东西,显然在课堂上有一个无参数的构造函数。有没有人经历过这个?有什么想法吗?
答案 0 :(得分:2)
确保您新建 WebApiConfiguration obj(从HttpConfiguration派生)并将其设置为默认的Http配置,并在主机中调用 routes.SetDefaultHttpConfiguration()(我正在使用MVC主机。)
我遇到了与从HttpConfiguration切换到WebApiConfiguration之前相同的问题。
有关详细信息,请参阅here.
答案 1 :(得分:0)