HttpContext.Current.Request.Url.AbsoluteUri在ASP.Net核心MVC中等效



我已经将以下ASP.Net MVC代码转换为ASP.Net Core MVC,但我遇到了类似的错误

"HttpContext"不包含"Current"的定义,并且找不到接受"HttpContext"类型的第一个参数的可访问扩展方法"Current"(您是否缺少using指令或程序集引用?(

using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Http;
public class MMAPIController : ControllerBase
{
public IConfiguration _config;
public MMAPIController(IConfiguration iConfig)
{            
_config = iConfig;
}
public string AbsolutePath = HttpContext.Current.Request.Url.AbsoluteUri.Replace("%20", "");
public void SuccessMessage(int personnelSK)
{
if (Logging)
SmartLogger.Info(DateTime.Now.ToString("dd/MM/yy HH:mm:ss") + " Enter API- " + AbsolutePath + "  User Id- " + personnelSK);
}
}

我已经添加了此命名空间using Microsoft.AspNetCore.Http;

在此处输入图像描述

如果您的代码在控制器中,那么它应该从ControllerBase继承,这样您就可以作为受保护的属性直接访问请求:

string absolutePath = Request....

如果你在另一个类中,你可以通过将IHttpContextAccessor注入你的构造函数来访问HttpContext(只要你通过DI获得你的类实例(:

public class MyClass
{
private readonly IHttpContextAccessor _httpContextAccessor;
public MyClass(IHttpContextAccessor httpContextAccessor)
{
_httpContextAccessor = httpContextAccessor;
}
...
// your code
string absolutePath = _httpContextAccessor.HttpContext.Request....
}

但您需要确保在启动时使用进行注册

services.AddHttpContextAccessor();

最新更新