Всем привет.
Пытаюсь выполнить простой запрос на добавление контакта через 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 делаю.
Может кто-то поможет мне, как избавиться от ошибки?
Нравится
Добрый день!
Данная проблема наблюдалась в старых версиях особенно при использовании Odata4 с хедером ForceUseSession: true вместе с Feature-EnableOAuth20Integration = true. Эта ошибка была исправлена в релизных версиях. Именно по этой причине мы рекомендуем использовать последнюю версию продукта.
Kyrylo Atamanenko,
Попробовал Feature-EnableOAuth20Integration поставить и true и false, ничего не поменялось(