ASP.Net vNext App_Data文件夹

7
2个回答

8

在vNext中,我们仍然有App_Data

这应该仍然有效。

string path = AppDomain.CurrentDomain.GetData("DataDirectory").ToString();

关于Server.MapPath的等效方法,您可以使用AppDomain.CurrentDomain.BaseDirectory并从那里构建您的路径。

您还可以使用IApplicationEnvironment服务。

private readonly IApplicationEnvironment _appEnvironment;

public HomeController(IApplicationEnvironment appEnvironment)
{
    _appEnvironment = appEnvironment;
}

public IActionResult Index()
{
    var rootPath = _appEnvironment.ApplicationBasePath;
    return View();
}

IHostingEnvironmentWeb应用程序的道德等价物,类似于 IApplicationEnvironment。对于 PhysicalFileSystemIHostingEnvironment会回退到IApplicationEnvironment

private readonly IHostingEnvironment _hostingEnvironment;

public HomeController(IHostingEnvironment hostingEnvironment)
{
    _hostingEnvironment = hostingEnvironment;
}

public IActionResult Index()
{
   var rootPath = _hostingEnvironment.MapPath("APP_DATA");
   return View();
}

config.json 在 VS2015 预览版中存储在项目文件夹中,我不确定是否可以称其为 App_Data 文件夹。我刚刚发现我们还可以在 Startup 类中使用 IHostingEnvironment.WebRoot。这是否会成为官方最佳实践,或者仍然是一种解决方法? - Andrew Van Den Brink
1
看起来它们已经改变了它的位置。IHostingEnvironment是IApplicationEnvironment在Web应用程序中的道德等价物。对于PhysicalFileSystem,IHostingEnvironment回退到IApplicationEnvironment。 - Mihai Dinculescu
4
string path = AppDomain.CurrentDomain.GetData("DataDirectory").ToString(); 在CoreCLR上无法工作。 - davidfowl

4

IHostingEnvironment中存在MapPath方法。

private readonly IHostingEnvironment _env;
public HomeController(IHostingEnvironment env)
{
    _env = env;
}

public IActionResult Index()
{
   var dataFolderPath = _env.MapPath("APP_DATA");
   return View();
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接