在asp.net vnext中获取应用程序路径

时间:2015-03-05 09:50:13

标签: c# owin asp.net-core

我一直在尝试在asp.net 5中打开一个文件并且没有取得很大的成功。

过去您使用的是Server.MapPathHostingEnvironment.ApplicationPhysicalPath。它们都在基于OWIN的框架中消失了。

有一个HostingEnvironment类,但它在System.Aspnet但是它需要由托管环境初始化(它不再有ApplicationPhysicalPath的静态成员但我猜WebRoot成员现在就这样做了。问题是我无法在任何地方找到它的引用。

我也查看了Context.GetFeature<>,但似乎没有任何功能可以显示应用程序路径,只显示请求和响应相关信息。列出功能的代码可以找到here

<snark>是否能够在ASP.NET中使用已停用的文件?</snark>

还有可能我现在不能brain很好地错过了一些东西。

2 个答案:

答案 0 :(得分:12)

您可以从ApplicationBasePath服务的Microsoft.Framework.Runtime.IApplicationEnvironment属性中获取它。

示例:https://github.com/aspnet/Mvc/blob/9f1cb655f6bb1fa0ce1c1e3782c43a2d45ca4e37/test/WebSites/FilesWebSite/Controllers/DownloadFilesController.cs#L28

答案 1 :(得分:5)

现在有两种方法:

using Microsoft.Extensions.PlatformAbstractions;

public Startup(IApplicationEnvironment appEnv)
{
    // approach 1
    var path01 = PlatformServices.Default.Application.ApplicationBasePath;

    // approach 2
    var path02 = appEnv.ApplicationBasePath;
}