SDL Web | Ошибка в контентной службе | Недопустимая конечная точка службы v4 для службы контента


1

У меня есть специальная служба, написанная на .Net для извлечения данных компонента. Эта служба использует API-интерфейсы SDL Web Delivery V 8.1.1 и развертывается на сервере доставки. У меня есть отдельные серверы для контента и доставки. В этом сервисе я получаю componentpresentation с использованием метода GetComponentPresentationWithPrioritycomponentpresentation factory. Я получаю следующее сообщение об ошибке:

Invalid v4 service endpoint for content-service at Sdl.Web.Delivery.ContentService.AutoConfigure.get_ODataV4ServiceEndpoint() at Sdl.Web.Delivery.ContentService.ContentServiceProvider..ctor() at Sdl.Web.Delivery.ContentService.ContentServiceProvider.get_Instance() at Sdl.Web.Delivery.Dynamic.ComponentPresentationFactory.RetrieveComponentPresentation(Int32 paramPublicationId, String methodName, Object[] parameters) at Sdl.Web.Delivery.Dynamic.ComponentPresentationFactory.GetComponentPresentationWithPriority(Int32 componentId, Int32 priority) at Tridion.ContentDelivery.DynamicContent.ComponentPresentationFactory.GetComponentPresentationWithPriority(Int32 componentId, Int32 priority)

Я проверил возможность contentservice установлена ​​в службе обнаружения, а также повторно запустить утилиту для обновления возможностей. Пробовал использовать конечные точки http://localhost:8081//client/v4/content.svc и http://localhost:8081/content.svc для службы контента. Оба дают ту же ошибку. Аутентификация также отключена для службы обнаружения и контента.

ДОПОЛНИТЕЛЬНО: Когда я пытаюсь

ComponentPresentation cp1 = cpf.GetComponentPresentationWithHighestPriority(URI); 

нет никаких ошибок, но cp1 является null. Я вижу, что в содержимом брокерской базы данных существует. И это происходит для всех компонентов.

но в то же время

ComponentPresentation cp = cpf.GetComponentPresentationWithPriority(componentId, priority); 

бросает выше ошибки.

Мне интересно, как API соединяется с сервисом контента и откуда он получает строку подключения? Я пробовал изменить Tridion_Home и добавить lib/config папку в папке bin моей пользовательской службы. Но успеха нет.

  0

У url есть двойные слэши после порта? 09 июн. 162016-06-09 11:43:20

  0

Да, url имеет двойные косые черты. Я использовал это, поскольку http: // localhost: 8081/content.svc/дает мне URL-адреса для v2 и V4 в этом формате. Но даже использование одиночной косой черты не имеет никакого значения. 09 июн. 162016-06-09 11:46:20

4

Приложение Dot Net API для доставки контента подключается к Content Service на основе конфигурации ContentServiceCapability, полученной от discovery service. Таким образом, для конечной точки службы обнаружения требуется Web.config как свойство discovery-service-uri.

GetComponentPresentationWithPriority возвращает значение null, поскольку обрабатывает исключение (он регистрирует исключение, которое может быть похоже).

Проверьте, правильно ли сконфигурирован конечный пункт службы обнаружения, и он подключает его для получения правильного ContentServiceCapability.

  0

Спасибо vinayknl, это прекрасно работает. Фактически, перед вашим ответом я смог заставить его работать, добавив контент-сервис uri в веб-конфигурацию с ключевым «content-service-uri». Поэтому либо добавьте «discovery-service-uri», либо добавьте «content-service-uri» в web.config настраиваемой службы, и оба работают нормально. Также URL-адрес службы службы, настроенный в конфигурации хранилища служб обнаружения, должен указывать на корень службы контента (HTTP: локальный: 8081/содержание.svc), а не версии. 13 июн. 162016-06-13 07:50:42

  0

В идеале вместо этого используйте функцию обнаружения-службы-uri, так как это позволит вам перемещать вашу службу контента (или масштабировать ее или что-то еще), не изменяя конфигурацию вашего клиента webapp. Рад, что ты его нашел. 12 дек. 162016-12-12 12:47:14


2

Конфигурация вашего хранилища указывает на версию v4, но некоторым командам нужен v2, поэтому вы получите ошибки таким образом. Вы должны просто указать корень службы, например: http://localhost:8081/content.svc

API-интерфейс клиента компакт-диска знает, к какой конечной точке идти, поэтому вам не нужно беспокоиться о том, является ли он v2 или v4.

  0

Привет, Питер, я тоже это пробовал. На самом деле раньше у меня была конечная точка http: // localhost: 8081/content.svc, настроенная в конфигурации хранения хранилища. Но все же я получал такую ​​же ошибку, затем я попробовал различные варианты и изменил конечную точку на v4. 09 июн. 162016-06-09 14:32:48