Возврат ItemStats из Tridion UGC
Мне было интересно, если кто-нибудь может предложить какие-либо указатели на этот. Я пытаюсь вернуть ItemStats из веб-службы Tridion UGC, но получаю следующую ошибку при попытке связать результаты:-
Закрытый тип TridionWebUGC.CDS.ItemStat не имеет соответствующего настраиваемого свойства LastRatedDate.
Пример кода:
WebServiceClient ugcCall2 = new WebServiceClient();
Uri uri = new Uri("http://new.ugc.service/odata.svc");
CDS.ContentDeliveryService cds = new CDS.ContentDeliveryService(uri);
var myItemStats = cds.ItemStats.Where(p => p.PublicationId == 68 && p.Id == 17792 && p.Type==16);
Я могу получить комментарии и оценки без проблем. Например
var myComments = cds.Comments.Where(p => p.ItemId == 17805).OrderBy(p => p.CreationDate);
Это просто ItemStats, которые вызывают у меня проблему. У кого-нибудь есть идеи?
Спасибо
Джон
1 ответ
К сожалению, метаданные UGC WebService неверны в отношении ItemsStats. Для вас это означает, что метаданные веб-сервиса не раскрывают тот факт, что сущность ItemStat содержит LastRatedDate
имущество. Это делает ваши прокси-серверы.NET не осведомленными об этом свойстве и делает ваш запрос неудачным. Чтобы обойти этот дефект у вас есть два варианта:
- Добавьте к вашим услугам следующее свойство:
cds.IgnoreMissingProperties = true
;. Преимущество такого подхода заключается в том, что вы закончите с ним за 2 секунды. Недостатком является то, что вы не сможете получить доступ к этому свойству (если вы действительно используете его); - Измените прокси, сгенерированные Visual Studio, и вручную добавьте это свойство в класс ItemStat. Преимущество такого подхода заключается в том, что вы сможете получить доступ к свойству из вашего проекта. Недостатком является то, что с точки зрения кодирования это абсолютно невозможно, нужно быть осторожным при обновлении или регенерации прокси-серверов, и при добавлении свойства вручную легко ошибиться.
Примечание 1: для доступа к метаданным вашего веб-сервера из браузера вы можете перейти на /odata.svc/$metadata
,
Примечание 2: при ближайшем рассмотрении в метаданных webService отсутствуют 2 свойства: LastRatedDate
а также LastCommentedDate
,
Надеюсь это поможет.