C# 如何在ASP.NET Core中使用HttpContextAccessor读取URI参数

C# 如何在ASP.NET Core中使用HttpContextAccessor读取URI参数,c#,asp.net-core,httpcontext,route-parameters,C#,Asp.net Core,Httpcontext,Route Parameters,我正在尝试从DelegatingHandler中读取使用IHttpContextAccessor接口及其默认实现HttpContextAccessor发送到WEB API操作方法的URL参数 控制器如下所示: [HttpPost("{siteName}/{accountID}")] public async Task<ActionResult<AirRequest>> Post(AirCModel model, string siteName, string accoun

我正在尝试从DelegatingHandler中读取使用IHttpContextAccessor接口及其默认实现HttpContextAccessor发送到WEB API操作方法的URL参数

控制器如下所示:

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

}

您可以通过调用扩展方法拉出
HttpContext
,然后从中读取各个值。下面是一个例子:

var routeData = _httpContextAccessor.HttpContext.GetRouteData();
var siteName = routeData.Values["siteName"];
var accountID = routeData.Values["accountID"];
GetRouteData
扩展方法位于
Microsoft.AspNetCore.Routing
命名空间中,因此您可能需要使用Microsoft.AspNetCore.Routing添加
相应地

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

    services.AddHttpContextAccessor();
}
var routeData = _httpContextAccessor.HttpContext.GetRouteData();
var siteName = routeData.Values["siteName"];
var accountID = routeData.Values["accountID"];