ASP.Net vNext App_Data 文件夹

Posted

技术标签:

【中文标题】ASP.Net vNext App_Data 文件夹【英文标题】:ASP.Net vNext App_Data folder 【发布时间】:2015-02-08 13:12:44 【问题描述】:

与此处找到的问题类似:ASP.NET MVC - Find Absolute Path to the App_Data folder from Controller。

App_Data 文件夹消失了吗? Server.MapPath 好像也不见了。

我尝试使用Url.Content 获得相同的结果,但它似乎不起作用。

【问题讨论】:

【参考方案1】:

我们确实在 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();

IHostingEnvironment 在道德上等同于 Web 应用程序IApplicationEnvironment。对于 PhysicalFileSystemIHostingEnvironment 回退到 IApplicationEnvironment

private readonly IHostingEnvironment _hostingEnvironment;

public HomeController(IHostingEnvironment hostingEnvironment)

    _hostingEnvironment = hostingEnvironment;


public IActionResult Index()

   var rootPath = _hostingEnvironment.MapPath("APP_DATA");
   return View();

【讨论】:

从 vs2015 预览版开始的 config.json 存储在项目文件夹中,我不确定我们是否可以调用该 App_Data 文件夹。我刚刚发现我们也可以在 Startup 类中使用 IHostingEnvironment.WebRoot 。这将是官方的最佳做法还是仍然是解决方法? 看起来他们已经改变了它的位置。 IHostingEnvironment 是 IApplicationEnvironment 的道德等价物,但适用于 Web 应用程序。对于 PhysicalFileSystem,IHostingEnvironment 回退到 IApplicationEnvironment。 字符串路径 = AppDomain.CurrentDomain.GetData("DataDirectory").ToString();不适用于 CoreCLR【参考方案2】:

MapPath 存在于 IHostingEnvironment 中

private readonly IHostingEnvironment _env;
public HomeController(IHostingEnvironment env)

    _env = env;


public IActionResult Index()

   var dataFolderPath = _env.MapPath("APP_DATA");
   return View();

【讨论】:

以上是关于ASP.Net vNext App_Data 文件夹的主要内容,如果未能解决你的问题,请参考以下文章

如何为我的 ASP.NET Web 应用程序引用 App_Data 文件夹中的 Sqlite db 文件?

ASP.NET中App_Data等文件夹的作用

什么是 asp.net vnext 中的 wwwroot

ASP.NET VNext 调试 MVC 源码

无法在 ASP.NET vNext 中启动我的静态文件托管服务器

如何让 Visual Studio 使用我的数据库,而不是 ASP.NET MVC 项目中 App_Data 文件夹中的 .mdf 文件?