Последовательность не содержит соответствующего элемента C # Web Api - PullRequest
0 голосов
/ 25 октября 2019

Я провел несколько поисков, и мне не нравится удалять модуль форматирования xml, как предлагали многие, я хочу уточнить проблему и исправить ее соответствующим образом, поскольку в будущем этот API должен будет выводить xml, а не только json.

В связи с этим проблема заключается в том, что с 1 из конечных точек API я создаю список транзакций с некоторой информацией об учетной записи, которую я пытаюсь получить в приложении. Тем не менее я получаю следующую ошибку в Postman.

Типу ObjectContent`1 не удалось сериализовать тело ответа для типа контента application / json;charset = utf-8 '.

В моем коде я получаю доступ к фасаду, который получает данные для меня, и собираю набор результатов в корзину.

var Accounts = AccountsFacade.GetByID( resultSet.Select( t => t.AccountID ).Distinct() );

var Result = resultSet.Select( t => new ApiTransaction()
{
    ID = t.ID,
    Name = Accounts.Single( a => a.ID == t.ID ).Name,
    Surname = Accounts.Single( a => a.ID == t.ID ).Surname,
    Company = Accounts.Single( a => a.ID == t.ID ).Company,
    VatNumber = Accounts.Single( a => a.ID == t.ID ).VatNumber,
    Action = t.Action,
    Credit = t.Credit,
    Debit = t.Debit,
    Details = t.Details,
    Timestamp = t.Timestamp
} );

var resultBucket = new Bucket( )
{
    TotalResults = TransactionsCount,
    Count = resultSet.Count,
    Page = Page,
    TotalPages = TotalPages,
    Result = Result
};

var response = Request.CreateResponse( HttpStatusCode.OK, resultBucket, Configuration.Formatters.JsonFormatter );
response.Headers.Add( "Access-Control-Allow-Origin", "*" );
return response;

тип возвращаемого значения моей конечной точки: «HttpResponseMessage»

Отладка

Я провел некоторую отладку и попытался определить проблему, но не смог найти ничего неправильного в ответе. Ответ устанавливается в формате json, как и ожидалось, и никаких ошибок в контроллере или приложении не выдается.

Любая помощь очень ценится.

1 Ответ

2 голосов
/ 25 октября 2019

В моем случае проблема заключалась в глупой упущенной ошибке

При выборе и создании нового списка с другой информацией сопоставление проводилось по идентификатору аккаунта и идентификатору транзакции, который не получал никаких результатов из-за моегоиспользование "Single".

Я сохранил Single, но сопоставил его с t.AccountID

С

var Result = resultSet.Select( t => new ApiTransaction()
{
    ID = t.ID,
    Name = Accounts.Single( a => a.ID == t.ID ).Name,
    Surname = Accounts.Single( a => a.ID == t.ID ).Surname,
    Company = Accounts.Single( a => a.ID == t.ID ).Company,
    VatNumber = Accounts.Single( a => a.ID == t.ID ).VatNumber,
    Action = t.Action,
    Credit = t.Credit,
    Debit = t.Debit,
    Details = t.Details,
    Timestamp = t.Timestamp
} );

К

var Result = resultSet.Select( t => new ApiTransaction()
{
    ID = t.ID,
    Name = Accounts.Single( a => a.ID == t.AccountID ).Name,
    Surname = Accounts.Single( a => a.ID == t.AccountID ).Surname,
    Company = Accounts.Single( a => a.ID == t.AccountID ).Company,
    VatNumber = Accounts.Single( a => a.ID == t.AccountID ).VatNumber,
    Action = t.Action,
    Credit = t.Credit,
    Debit = t.Debit,
    Details = t.Details,
    Timestamp = t.Timestamp
} );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...