我如何在 ASP.NET MVC 6 (SIX) 代码中获取 bin 或 wwwroot 目录
How do i get bin or wwwroot directory in ASP.NET MVC 6 (SIX) code
在 ASP.NET MVC 5 中我使用了
_myStem = new MyStemWrapper(Path.Combine(HttpRuntime.AppDomainAppPath, "mystem.exe"));
获取文件路径。
在 ASP.NET MVC 6 中,我无法通过相同的方式获取路径。我需要在任何请求之前获取路径,因为我的包装器是由 IOC
创建的单例
var d = AppDomain.CurrentDomain; // some path to C:\Users\username\.dnx\runtimes\dnx-clr-win-x86.1.0.0-beta5\bin
var r = HttpRuntime.BinDirectory; // ArgumentNullException
var r2 = HttpRuntime.AppDomainAppPath; // ArgumentNullException
var ap = Apllication.StartupPath; // Application class missing
var s = Server.MapPath("~/") // Server class missing
在 ASP.NET 5 中,您可以使用 IApplicationEnvironment
:
轻松访问这些信息
private readonly IApplicationEnvironment _app;
public HomeController(IApplicationEnvironment app)
{
_app = app;
}
public IActionResult Index()
{
var path = _app.ApplicationBasePath;
}
Update: 如果你想要确切的 wwwroot 路径,你可以注入 IHostingEnvironment
并得到 WebRootPath
属性:
private readonly IHostingEnvironment _app;
public HomeController(IHostingEnvironment app)
{
_app = app;
}
public IActionResult Index()
{
var path = _app.WebRootPath;
}
在 ASP.NET MVC 5 中我使用了
_myStem = new MyStemWrapper(Path.Combine(HttpRuntime.AppDomainAppPath, "mystem.exe"));
获取文件路径。
在 ASP.NET MVC 6 中,我无法通过相同的方式获取路径。我需要在任何请求之前获取路径,因为我的包装器是由 IOC
创建的单例var d = AppDomain.CurrentDomain; // some path to C:\Users\username\.dnx\runtimes\dnx-clr-win-x86.1.0.0-beta5\bin
var r = HttpRuntime.BinDirectory; // ArgumentNullException
var r2 = HttpRuntime.AppDomainAppPath; // ArgumentNullException
var ap = Apllication.StartupPath; // Application class missing
var s = Server.MapPath("~/") // Server class missing
在 ASP.NET 5 中,您可以使用 IApplicationEnvironment
:
private readonly IApplicationEnvironment _app;
public HomeController(IApplicationEnvironment app)
{
_app = app;
}
public IActionResult Index()
{
var path = _app.ApplicationBasePath;
}
Update: 如果你想要确切的 wwwroot 路径,你可以注入 IHostingEnvironment
并得到 WebRootPath
属性:
private readonly IHostingEnvironment _app;
public HomeController(IHostingEnvironment app)
{
_app = app;
}
public IActionResult Index()
{
var path = _app.WebRootPath;
}