7

Similar question to the one found here: ASP.NET MVC - Find Absolute Path to the App_Data folder from Controller.

Is App_Data folder gone? Server.MapPath seems to be gone too.

I tried to achieve the same results with Url.Content, but it doesn't seem to be working.

2 Answers 2

8

We do have App_Data in vNext.

This should still work

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

As for Server.MapPath equivalents you can use AppDomain.CurrentDomain.BaseDirectory and build your path from there.

You can also use the IApplicationEnvironment service

private readonly IApplicationEnvironment _appEnvironment;

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

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

IHostingEnvironment is the moral equivalent of the IApplicationEnvironment for web applications. For PhysicalFileSystem, IHostingEnvironment falls back to IApplicationEnvironment.

private readonly IHostingEnvironment _hostingEnvironment;

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

public IActionResult Index()
{
   var rootPath = _hostingEnvironment.MapPath("APP_DATA");
   return View();
}
Sign up to request clarification or add additional context in comments.

3 Comments

config.json as of vs2015 preview version is stored at project folder, i'm not sure if we can call that App_Data folder. I just found out that we can also use IHostingEnvironment.WebRoot within Startup class. will this be official best practice or still workaround?
It looks like they have changed it's location. IHostingEnvironment is the moral equivalent of the IApplicationEnvironment but for web applications. For PhysicalFileSystem, IHostingEnvironment falls back to IApplicationEnvironment.
string path = AppDomain.CurrentDomain.GetData("DataDirectory").ToString(); will not work on CoreCLR
4

MapPath exists in IHostingEnvironment

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

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

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.