Skip to content

ARC0029 - Non-public static method is not exposed as a query

Arc exposes only public static query methods on [ReadModel] types. Internal, private, protected, protected internal, and private protected methods are not endpoints and have no generated query proxy, even with [Query]. A public static method on an internal read-model type can still be a query.

ARC0029 is a warning on non-public static methods that return the declaring read model or a supported query wrapper, or carry [Query]. It also applies in RequireQueryAttribute = true mode. Ordinary helpers returning unrelated values, such as string or plain Task, do not trigger it unless marked [Query].

Earlier versions allowed internal query methods. Removing that exposure prevents a non-public helper from becoming callable over HTTP because of its return shape. Direct C# calls are unchanged.

If this method is an intended query, make it public and review its authorization and request parameters before exposing it. Keep its [Query] marker when the read model requires explicit query selection.

If it is a helper, keep it non-public. Remove any [Query] marker; a non-public marked method also causes ARC0026. You may suppress ARC0029 locally for an intentional query-shaped helper after confirming it should not be exposed. Suppressing the warning never exposes the method.

See static query method requirements.