System.Threading.Tasks.Task - не может быть сериализован, потому что у него нет конструктора без параметров. - PullRequest
1 голос
/ 28 октября 2011

В настоящее время я использую WCF Web API , и он отлично работает с синхронными задачами.Тем не менее, когда я пытаюсь реализовать асинхронные операции с помощью Task / Task примерно так:

    [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. 

Теперь первым делом я проверил ближайший класс и добавил конструктор без параметров, например, так:

public class Closest
{
    public Closest() { }

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

Но я все еще получаю ту же ошибку.Я перепробовал все, и ясно, что в классе есть конструктор без параметров.Кто-нибудь когда-либо испытывал это?Есть идеи?

Ответы [ 2 ]

2 голосов
/ 11 января 2012

Убедитесь, что вы создали WebApiConfiguration obj (полученное из HttpConfiguration) и установите его в качестве конфигурации Http по умолчанию с вызовом routs.SetDefaultHttpConfiguration () в хосте (I 'м с использованием хоста MVC).

У меня была такая же проблема, как и у вас, прежде чем я переключился с HttpConfiguration на WebApiConfiguration.

Подробнее см. здесь.

0 голосов
/ 28 октября 2011
...