Есть ли способ получить HttpContext из класса ASP.NET Core IFileProvider? - PullRequest
0 голосов
/ 10 июня 2019

Я пытаюсь получить экземпляр HttpContext от IFileProvider, поэтому я могу получить доступ к исходному пути, запрошенному до обновления сопоставления маршрута в подпути.

Я пробую образец длячитать представление динамически из базы данных, но так как путь всегда сопоставлен с основным контроллером, а представления кэшированы, я не могу получить доступ к исходному пути запроса для загрузки правильного представления из базы данных.Единственный способ заставить его работать - это жестко сопоставить сопоставления и иметь соответственно разные контроллеры или действия, обрабатывающие каждый файл, но тогда он не будет использовать динамические представления из базы данных.

public class DBViewProvider : IFileProvider {

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

        return new DBViewDirectoryContents(path);
    }

1 Ответ

1 голос
/ 10 июня 2019

Внедрение зависимостей поможет вам внедрить Http Context Accessor в конструкторе

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

Вам нужно будет добавить эту строку в методе Startup.ConfigureServices следующим образом

        services.AddHttpContextAccessor();
...