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

lin*_*rro 9 c# owin asp.net-core

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

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

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

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

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

还有可能我现在脑筋不好,错过了什么.

Kir*_*lla 12

你可以从serivce 的ApplicationBasePath财产获得它Microsoft.Framework.Runtime.IApplicationEnvironment.

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

  • `IApplicationEnvironment`现在位于`Microsoft.Extensions.PlatformAbstractions`命名空间中 (5认同)

Sha*_*tin 5

现在有两种方法:

using Microsoft.Extensions.PlatformAbstractions;

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

    // approach 2
    var path02 = appEnv.ApplicationBasePath;
}
Run Code Online (Sandbox Code Playgroud)