Всем привет. 

Пытаюсь выполнить простой запрос на добавление контакта через Odata 4.

Если в header проставить флаг ForceUseSession = true, то запрос возвращается с 500 ошибкой

 

{"error":{"code":"","message":"An error has occurred.","innererror":{"message":"Object reference not set to an instance of an object.","type":"System.NullReferenceException","stacktrace":"   at Terrasoft.Web.OData.Filters.ODataAuthorizationFilterHelper.GetCanPortalUsersUseOdata(UserConnection userConnection)\r\n   at Terrasoft.Web.OData.Filters.ODataAuthorizationFilterHelper.GetCanUserUseODataService(UserConnection userConnection)\r\n   at Terrasoft.Web.OData.Filters.ODataAuthorizationFilterHelper.GetIsRequestAuthorized(Func`1 getUserConnection, Type controllerType, IDictionary`2 routeValues, Boolean isGetMethod)\r\n   at Terrasoft.WebApp.Filters.ODataAuthorizeFilter.OnAuthorization(HttpActionContext actionContext)\r\n   at System.Web.Http.Filters.AuthorizationFilterAttribute.OnAuthorizationAsync(HttpActionContext actionContext, CancellationToken cancellationToken)\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Web.Http.Filters.AuthorizationFilterAttribute.<ExecuteAuthorizationFilterAsyncCore>d__3.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__15.MoveNext()"}}}

Если флаг убрать, то все сохраняется.



Пробовал на разных версиях (7.16.0, 7.16.4, 7.18.5, 8.0.10), на некоторых работает и с флагом, на других нет. Например в 7.16.0 работает, а 7.16.4 нет. Подозреваю, что существует какая-то настройка или что-то в этом роде.

Все запросы от Supervisor делаю.

Может кто-то поможет мне, как избавиться от ошибки? 

Нравится

2 комментария

Добрый день!

Данная проблема наблюдалась в старых версиях особенно при использовании Odata4 с хедером ForceUseSession: true вместе с Feature-EnableOAuth20Integration = true. Эта ошибка была исправлена в релизных версиях. Именно по этой причине мы рекомендуем использовать последнюю версию продукта.

Kyrylo Atamanenko,

Попробовал Feature-EnableOAuth20Integration поставить и true и false, ничего не поменялось(

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