ActionContext 消失了 Microsoft.AspNetCore.Mvc.Controller

ActionContext gone in Microsoft.AspNetCore.Mvc.Controller

我在 Microsoft.AspNetCore.Mvc.Controller

中找不到 ActionContext

在我将版本更改为 AspNetCore 1.0.0-preview1 之后

这是控制器class(更改后):

并且从“Microsoft.AspNet.Mvc”更改前:

和更新前旧方法的代码:

this.Agent = ControllerInfo.Request.Headers["User-Agent"];
this.IP = ControllerInfo.HttpContext.Features.Get<IHttpConnectionFeature>()?.LocalIpAddress?.ToString(); 
this.RemoteIP = ControllerInfo.HttpContext.Features.Get<IHttpConnectionFeature>()?.RemoteIpAddress.ToString();
this.Refrence = ControllerInfo.ActionContext.RouteData.Values["controller"].ToString() 
    + "/" + ControllerInfo.ActionContext.RouteData.Values["action"].ToString();

我用 ControllerContext 替换了 ActionContext,它对我有用。 不过,我不知道这是否是正式的迁移步骤。

您可以将 IActionContextAccessor 注入您的 class。它提供对操作上下文的访问。

services.AddSingleton<IActionContextAccessor, ActionContextAccessor>();

使用它:

private readonly IActionContextAccessor actionContextAccessor

public FooController(IActionContextAccessor actionContextAccessor)
{
    this.actionContextAccessor = actionContextAccessor;
}

this issue

至少在 .NET core 3.1 中,ControllerBase 有一个 属性 Url 作为 UrlHelper,因此您不必自己制作一个。