2

DelegatingHandler 内から IHttpContextAccessor インターフェイスとそのデフォルト実装 HttpContextAccessor を使用して、WEB API アクション メソッドに送信された URL パラメータを読み取ろうとしています。

コントローラーは次のようになります。

[HttpPost("{siteName}/{accountID}")]
public async Task<ActionResult<AirRequest>> Post(AirCModel model, string siteName, string accountID)
{

}

DelegatingHandler 内の値 {siteName}/{accountID} を読み取りたい

public class AuthenticationDelegatingHandler : DelegatingHandler
{
    private readonly IHttpContextAccessor _httpContextAccessor;

    public AuthenticationDelegatingHandler(IHttpContextAccessor httpContextAccessor)
    {      
        _httpContextAccessor = httpContextAccessor;
    }

    protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
    {
        var siteNAme = _httpContextAccessor ???
    }
}

Startup.cs に HttpContext サービスを挿入しました。

public void ConfigureServices(IServiceCollection services)
{                   
    services.AddMvc()
        .SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

    services.AddHttpContextAccessor();
}
4

1 に答える 1