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

时间:2016-05-17 21:28:05

标签: c# asp.net-mvc asp.net-core-1.0

我无法在Microsoft.AspNetCore.Mvc.Controller

中找到ActionContext

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

这是Controller类(更改后):

enter image description here

更改之前来自“ Microsoft.AspNet.Mvc ”:

enter image description here

以及更新前旧方法的代码:

        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();

3 个答案:

答案 0 :(得分:14)

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

答案 1 :(得分:11)

您可以为您的班级注入IActionContextAccessor。它提供对操作上下文的访问。

services.AddSingleton<IActionContextAccessor, ActionContextAccessor>();

使用它:

private readonly IActionContextAccessor actionContextAccessor

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

请参阅this issue

答案 2 :(得分:1)

至少在.NET core 3.1中,ControllerBase具有一个用作UrlHelper的属性Url,因此您不必自己创建一个。 https://stackoverflow.com/a/52537244/4172413