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;
}
至少在 .NET core 3.1 中,ControllerBase 有一个 属性 Url 作为 UrlHelper,因此您不必自己制作一个。
我在 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;
}
至少在 .NET core 3.1 中,ControllerBase 有一个 属性 Url 作为 UrlHelper,因此您不必自己制作一个。