Получить путь wwwroot в ConfigureServices (aspnetcore) - PullRequest
0 голосов
/ 27 августа 2018

В моем приложении aspnetcore (v2.1) мне нужно настроить базу данных только для чтения (ядро entityframework + SQLite), которая находится в ~ / wwwroot / App_Data / quranx.db

Мне нужно вызвать этот код в Startup.ConfigureServices

        services.AddDbContext<QuranXDataContext>(options => options
            .UseSqlite($"Data Source={databasePath}")
            .UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking)
        );

Но в этот момент я не могу найти способ получить путь к wwwroot. Чтобы получить этот путь, мне нужен IHostingEnvironment, но я не могу получить ссылку на него, пока не будет вызван Startup.Configure, то есть после завершения Startup.ConfigureServices.

Как это сделать?

1 Ответ

0 голосов
/ 27 августа 2018

Достаточно легко получить доступ к IHostingEnvironment в ConfigureServices (я объяснил, как ниже), но прежде чем читать подробности, взгляните на предупреждение Криса Пратта в комментариях о том, как хранить базу данных в wwwroot очень плохая идея.


Вы можете взять параметр конструктора типа IHostingEnviroment в своем классе Startup и захватить его как поле, которое затем можно использовать в ConfigureServices:

public class Startup
{
    private readonly IHostingEnvironment _env;

    public Startup(IHostingEnvironment env)
    {
        _env = env;
    }

    public void ConfigureServices(IServiceCollection services)
    {
        // Use _env.WebRootPath here.
    }

    // ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...