Skip to content

After enabling options.EnableResourceHooks = true; I get a NullReference on GET Articles/GetSecondary [id/relationshipName] #924

Closed
@woofi7

Description

@woofi7

DESCRIPTION

The request is crashing on this line because the type is IIdentifiable instead of the implemented type Image.
https://github.com/json-api-dotnet/JsonApiDotNetCore/blob/master/src/JsonApiDotNetCore/Configuration/ResourceGraph.cs#L85

The implementation seems to be lost at this place:
https://github.com/json-api-dotnet/JsonApiDotNetCore/blob/master/src/JsonApiDotNetCore/Hooks/Internal/ResourceHookExecutorFacade.cs#L131

System.NullReferenceException: Object reference not set to an instance of an object.
  at JsonApiDotNetCore.Configuration.ResourceGraph.GetRelationships
    C:\projects\jsonapidotnetcore\src\JsonApiDotNetCore\Configuration\ResourceGraph.cs:85
  at JsonApiDotNetCore.Hooks.Internal.Traversal.TraversalHelper.RegisterRelationshipProxies
    C:\projects\jsonapidotnetcore\src\JsonApiDotNetCore\Hooks\Internal\Traversal\TraversalHelper.cs:200
  at JsonApiDotNetCore.Hooks.Internal.Traversal.TraversalHelper.CreateRootNode
    C:\projects\jsonapidotnetcore\src\JsonApiDotNetCore\Hooks\Internal\Traversal\TraversalHelper.cs:56
  at JsonApiDotNetCore.Hooks.Internal.ResourceHookExecutor.GetHook
    C:\projects\jsonapidotnetcore\src\JsonApiDotNetCore\Hooks\Internal\ResourceHookExecutor.cs:199
  at JsonApiDotNetCore.Hooks.Internal.ResourceHookExecutor.OnReturn
    C:\projects\jsonapidotnetcore\src\JsonApiDotNetCore\Hooks\Internal\ResourceHookExecutor.cs:121
  at JsonApiDotNetCore.Hooks.Internal.ResourceHookExecutorFacade.OnReturnRelationship
    C:\projects\jsonapidotnetcore\src\JsonApiDotNetCore\Hooks\Internal\ResourceHookExecutorFacade.cs:131
  at JsonApiDotNetCore.Services.JsonApiResourceService`2+<GetSecondaryAsync>d__11.MoveNext
    C:\projects\jsonapidotnetcore\src\JsonApiDotNetCore\Services\JsonApiResourceService.cs:137
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification
  at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd
  at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult
  at JsonApiDotNetCore.Controllers.BaseJsonApiController`2+<GetSecondaryAsync>d__17.MoveNext
    C:\projects\jsonapidotnetcore\src\JsonApiDotNetCore\Controllers\BaseJsonApiController.cs:131
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification
  at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd
  at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult
  at JsonApiDotNetCore.Controllers.JsonApiController`2+<GetSecondaryAsync>d__4.MoveNext
    C:\projects\jsonapidotnetcore\src\JsonApiDotNetCore\Controllers\JsonApiController.cs:65
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification
  at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd
  at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult
  at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor+TaskOfIActionResultExecutor+<Execute>d__0.MoveNext
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification
  at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd
  at System.Threading.Tasks.ValueTask`1.get_Result
  at System.Runtime.CompilerServices.ValueTaskAwaiter`1.GetResult
  at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker+<<InvokeActionMethodAsync>g__Logged|12_1>d.MoveNext
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification
  at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd
  at System.Runtime.CompilerServices.TaskAwaiter.GetResult
  at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker+<<InvokeNextActionFilterAsync>g__Awaited|10_0>d.MoveNext
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw
  at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow
  at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next
  at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker+<<InvokeInnerFilterAsync>g__Awaited|13_0>d.MoveNext
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification
  at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd
  at System.Runtime.CompilerServices.TaskAwaiter.GetResult
  at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker+<<InvokeNextExceptionFilterAsync>g__Awaited|25_0>d.MoveNext

VERSIONS USED

  • JsonApiDotNetCore version: 4.0.1
  • ASP.NET Core version: 5.0
  • Entity Framework Core version: 5.0
  • Database provider: Pomelo.Mysql

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions