【问题标题】:How can I get the physical path from a virtual path in asp.net core?如何从 asp.net core 中的虚拟路径获取物理路径?
【发布时间】:2017-08-21 07:03:45
【问题描述】:

在 ASP.NET 中,我使用了Server.MapPath() 方法来获取物理路径。现在在core中,我不能这样做,我使用了IHostingEnvironment,但它只能获取wwwroot路径。

【问题讨论】:

标签: asp.net-core


【解决方案1】:

像下面这样使用 HostingEnvironment.MapPath

HostingEnvironment.MapPath("~/page.aspx")

或者这个来获取根文件夹路径

HostingEnvironment.MapPath("/")

【讨论】:

  • 我已经尝试过了,但它没有这个“MapPath”方法。我还需要做点别的吗?
  • 添加更多详细信息以便我为您提供帮助
  • HostingEnvironment 的命名空间是“Microsoft.AspNetCore.Hosting.Internal”,并且告诉我它不包含“MapPath”定义
  • 它在 System.Web 命名空间中,像这样使用它 System.Web.HostingEnvironment.MapPath("/")
  • 你确定可以在 asp.net core 中找到它吗?我找不到它。
【解决方案2】:

你应该使用FileProvider

var contents = _fileProvider.GetDirectoryContents("");
return contents.Select(i => i.PhysicalPath);

你可以查看我的demo code

【讨论】:

  • 我已经试过了,是从目录中获取文件列表,不是获取物理路径
  • 可以通过其属性获取物理路径 = PhysicalPath contents.Select(i => i.PhysicalPath); => 它返回物理路径
  • 我在 IIS 中发布了一个网站,并将目录设置为虚拟目录。现在我想获取目录物理路径来保存文件。
  • 然后呢?使用“WebRootPath”?
  • 在你的控制器中注入 IHostingEnvironment 然后你就可以得到你的根路径了,var rootPath =_env.ContentRootPath;
猜你喜欢
  • 1970-01-01
  • 2011-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多