如何在ASP.NET MVC 6(SIX)代码中获取bin或wwwroot目录

xak*_*akz 3 c# asp.net asp.net-mvc asp.net-core-mvc

在ASP.NET MVC 5中,我使用了

_myStem = new MyStemWrapper(Path.Combine(HttpRuntime.AppDomainAppPath, "mystem.exe"));
Run Code Online (Sandbox Code Playgroud)

获取文件路径。

在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
Run Code Online (Sandbox Code Playgroud)

Sir*_*ifi 5

在ASP.NET 5中,您可以使用以下命令轻松访问这些信息IApplicationEnvironment

private readonly IApplicationEnvironment _app;
public HomeController(IApplicationEnvironment app)
{
   _app = app;
}
public IActionResult Index()
{
   var path = _app.ApplicationBasePath;
}
Run Code Online (Sandbox Code Playgroud)

更新:如果您确实需要wwwroot路径,则可以注入IHostingEnvironment并获取WebRootPath属性:

private readonly IHostingEnvironment _app;
public HomeController(IHostingEnvironment app)
{
     _app = app;
}
public IActionResult Index()
{
    var path = _app.WebRootPath;
}
Run Code Online (Sandbox Code Playgroud)