我无法在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();
答案 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