有没有办法从ASP.NET Core IFileProvider类检索HttpContext?

时间:2019-06-10 07:04:11

标签: c# asp.net-core routing httpcontext

我正在尝试从HttpContext获取IFileProvider的实例,因此我可以访问在子路径中更新路由映射之前请求的原始路径。

我正在尝试从数据库动态读取视图的示例,但是由于该路径始终映射到主控制器,并且缓存的视图无法访问原始请求路径来从中加载正确的视图数据库。我唯一能使它起作用的方法是对映射进行硬核化,并分别使用不同的控制器或操作来处理每个文件,但是那样就不会使用数据库中的动态视图。

public class DBViewProvider : IFileProvider {

    public IDirectoryContents GetDirectoryContents(string subpath) {
        string path = ConvertPath(subpath);

        return new DBViewDirectoryContents(path);
    }

1 个答案:

答案 0 :(得分:1)

依赖注入将帮助您将Http Context Accessor注入构造函数中

public class DBViewProvider : IFileProvider {
 public (IHttpContextAccessor httpContextAccessor){
      var httpContext = httpContextAccessor.HttpContext;
 }
 /*******************hidden for brievety************/
}

您将需要在Startup.ConfigureServices方法中添加此行

        services.AddHttpContextAccessor();