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
。对于 PhysicalFileSystem,IHostingEnvironment
回退到 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 vNext 中启动我的静态文件托管服务器
如何让 Visual Studio 使用我的数据库,而不是 ASP.NET MVC 项目中 App_Data 文件夹中的 .mdf 文件?