Для запроса OData версии 4 (отредактированные части):
https://myurl/PROTEIN_LOT?$filter=(Barcode eq 'PRO27-1') & $ expand = PROJECT
Я получаю исключение:
Microsoft.OData.Core.ODataException: 'При записи ответа JSON должна быть указана пользовательская модель, а набор сущностей и тип сущностей должны быть переданы в ODataMessageWriter.Метод CreateODataEntryWriter или ODataFeedAndEntrySerializationInfo должны быть установлены для записываемой ODataEntry или ODataFeed. '
Это происходит во второй раз, когда читатель.исключение.Первая итерация в порядке и возвращает правильный URI.
Если $ expand = отсутствует в запросе, то он работает нормально.Мы используем Microsoft.Data.OData 5.6.3.0.
(пытаемся свести только к коду ключа):
ODataMessageReaderSettings settings = new ODataMessageReaderSettings { MessageQuotas = { MaxReceivedMessageSize = maxMessageSize } };
ODataMessageReader messageReader = new ODataMessageReader(responseMessage, settings, model);
while (reader.Read())
switch (reader.State)
{
case ODataReaderState.NavigationLinkStart:
ODataNavigationLink navLink = (ODataNavigationLink)reader.Item;
navName = navLink.Name;
if (resultEntryOn != null && string.IsNullOrEmpty(resultEntryOn.UriEntry))
{
// ERROR HERE - the second time it's called
string urlentry = navLink.Url.AbsoluteUri;
resultEntryOn.UriEntry = urlentry.Substring(0, urlentry.LastIndexOf("/"));
}
break;
// other case items - all work