4

通常のクラスでは、 から以下を読む必要がありますHttpContext

  1. コントローラーとアクション名

  2. アクションの属性 (私はそれを得ることができましHttpActionContext.ActionDescriptor.GetCustomAttributes<type>() たが、ここでは持っていませんHttpActionContext- 私は持っているだけですHttpContext)

  3. 引数を読み取ります ( のようactionContext.ActionArguments["paramName"]に、しかし再び - 私は しか持っていませんHttpContext)

これはアクション フィルターではなく、コントローラー クラスでもありません。しかし、私はアクセスできますHttpContext

4

1 に答える 1

2

asp.net コア 3.0 からhttps://stackoverflow.com/a/60602828/10612695

public async Task Invoke(HttpContext context)
{
    // Get the enpoint which is executing (asp.net core 3.0 only)
    var executingEnpoint = context.GetEndpoint();

    // Get attributes on the executing action method and it's defining controller class
    var attributes = executingEnpoint.Metadata.OfType<MyCustomAttribute>();

    await next(context);

    // Get the enpoint which was executed (asp.net core 2.2 possible after call to await next(context))
    var executingEnpoint2 = context.GetEndpoint();

    // Get attributes on the executing action method and it's defining controller class
    var attributes2 = executingEnpoint.Metadata.OfType<MyCustomAttribute>();
}
于 2020-08-05T12:31:33.240 に答える