ActionContext在Microsoft.AspNetCore.Mvc.Controller中消失了

Aha*_*kar 7 c# asp.net-mvc asp.net-core-1.0

我无法在Microsoft.AspNetCore.Mvc.Controller中找到ActionContext

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

这是Controller类(更改后):

在此输入图像描述

并在更改之前从" 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();
Run Code Online (Sandbox Code Playgroud)

小智 15

我用ControllerContext替换了ActionContext,它对我有用.不过,我不知道这是否是官方迁移步骤.

  • 它有效是因为`ControllerContext` 是`ActionContext` 的子类。 (2认同)

Mar*_*mro 13

你可以注入IActionContextAccessor你的班级.它提供对操作上下文的访问.

services.AddSingleton<IActionContextAccessor, ActionContextAccessor>();
Run Code Online (Sandbox Code Playgroud)

用它:

private readonly IActionContextAccessor actionContextAccessor

public FooController(IActionContextAccessor actionContextAccessor)
{
    this.actionContextAccessor = actionContextAccessor;
}
Run Code Online (Sandbox Code Playgroud)

看到这个问题.