Вопрос

OData через WCF-клиент

Коллеги, добрый день! 

Работа с объектами bpm'online по протоколу OData через WCF-клиент.

Версия продукта BPM Bank Customer Journey 7.7

Вызов происходит в Windows-приложении на удалённой машине:

// C#
  // Отрабатывает корректно:
    var sys = this.SysSettingsCollection.Where(x => x.Code.Equals(settingsCode)).FirstOrDefault();
    if (sys == null)
    {
        return false;
    }
 // Выбрасывает исключение:
    var val = this.SysSettingsValueCollection.Where(x => x.SysSettingsId.Equals(sys.Id)).FirstOrDefault();
    //var val = this.SysSettingsValueCollection.Where(x => x.SysSettingsId.Value.Equals(sys.Id)).FirstOrDefault();
    //var val = this.SysSettingsValueCollection.Where(x => x.SysSettingsId == sys.Id).FirstOrDefault();
    //var val = this.SysSettingsValueCollection.Where(x => x.SysSettingsId.Value == sys.Id).FirstOrDefault();



Первый запрос отрабатывает нормально, а любой вариант из 4х последних строк выбрасывает исключение:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<error xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
    <code>4

    The MaxDataServiceVersion '2.0' is too low for the response. The lowest supported version is '3.0'.
    
    The MaxDataServiceVersion '2.0' is too low for the response. The lowest supported version is '3.0'.
    System.Data.Services.DataServiceException
           в System.Data.Services.RequestDescription.VerifyAndRaiseResponseVersion(Version version, IDataService service)&#xD;
           в System.Data.Services.RequestDescription.UpdateVersions(String acceptTypesText, ResourceSetWrapper resourceSet, IDataService service)&#xD;
           в System.Data.Services.RequestUriProcessor.ProcessRequestUri(Uri absoluteRequestUri, IDataService service, Boolean internalQuery)&#xD;
           в System.Data.Services.DataService`1.HandleRequest()
      
   

Где отрегулировать и какие настройки?

Нравится

1 комментарий

Добрый день, Михаил!

Судя из ошибки, проблема в том что не совпадают версии протокола. Необходимо убедиться, что версия на стороне DataService и на стороне клиента совпадают. 

Вы можете явно указать какую версию протокола использовать при инициализации DataService. Попробуйте явно указать версию.

Пример: 

var ctx&nbsp;=&nbsp;new DataServiceContext(uri,&nbsp;DataServiceProtocolVersion.V3);

Показать все комментарии