使用EF7命令時,IHostingEnvironment.WebRootPath為null

asp.net-core asp.net-core-mvc entity-framework-core

問題

當我嘗試向我的代碼添加遷移時,例如: dnx ef migrations add initial

Startup(IHostingEnvironment env)env.WebRootPath Startup(IHostingEnvironment env)為null。

這將在添加新遷移或更新數據庫時給出編譯錯誤。

代碼

Startup.cs類中,我在構造函數中有以下行:

public Startup(IHostingEnvironment env)
{
    // ...
    MyStaticClass.Initialize(env.WebRootPath);
    // ...
    _hostingEnvironment = env;
}

這裡env.WebRootPath為null,在Initialize函數中拋出異常。

Startup.csConfigureServices函數中,我解決了我的類依賴關係:

public void ConfigureServices(IServiceCollection services)
{
    // ...
    services.AddInstance<IMyService>(new MyService(_hostingEnvironment.WebRootPath))
    // Note: _hostingEnvironment is set in the Startup constructor.
    // ...
}

筆記

  • 我可以構建,運行和部署代碼。一切正常!

  • 但是我在模型中進行了更改,並希望使用此命令添加遷移: dnx ef migrations add MyMigration然後我在包管理器控制台中看到編譯錯誤。

  • 我正在使用ASP 5 Web應用程序和Entity Framework 7

一般承認的答案

關於我的問題,github上報告了一個問題:

https://github.com/aspnet/EntityFramework/issues/4494

我現在在評論中使用了解決方法似乎工作正常:

if (string.IsNullOrWhiteSpace(_env.WebRootPath))
{
   env.WebRootPath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot");
}

熱門答案

如果無意中從項目的根目錄中刪除了wwwroot文件夾,則env.WebRootPath也可以為null。將wwwroot文件夾添加到項目的根目錄也可以解決此問題。



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow