如何在ASP NET核心中获取绝对路径100替代方式

我试过用100,但效果不好.

IHostingEnvironment env = new HostingEnvironment();
var str1 = env.ContentRootPath; // Null
var str2 = env.WebRootPath; // Null, both doesn't give any result 

我有一个图像文件(Sample.PNG)在wwwroot个文件夹中,我需要得到这个绝对路径.

推荐答案

从.Net Core v3.0开始,访问已移动到Web特定环境界面的WebRootPath应该是IWebHostEnvironment.

IWebHostEnvironment作为依赖项注入依赖类.框架将为您填充它

public class HomeController : Controller {
    private IWebHostEnvironment _hostEnvironment;

    public HomeController(IWebHostEnvironment environment) {
        _hostEnvironment = environment;
    }

    [HttpGet]
    public IActionResult Get() {
        string path = Path.Combine(_hostEnvironment.WebRootPath, "Sample.PNG");
        return View();
    }
}

您可以更进一步,创建您自己的路径提供程序服务抽象和实现.

public interface IPathProvider {
    string MapPath(string path);
}

public class PathProvider : IPathProvider {
    private IWebHostEnvironment _hostEnvironment;

    public PathProvider(IWebHostEnvironment environment) {
        _hostEnvironment = environment;
    }

    public string MapPath(string path) {
        string filePath = Path.Combine(_hostEnvironment.WebRootPath, path);
        return filePath;
    }
}

并将IPathProvider注入依赖类.

public class HomeController : Controller {
    private IPathProvider pathProvider;

    public HomeController(IPathProvider pathProvider) {
        this.pathProvider = pathProvider;
    }

    [HttpGet]
    public IActionResult Get() {
        string path = pathProvider.MapPath("Sample.PNG");
        return View();
    }
}

确保向DI容器注册服务

services.AddSingleton<IPathProvider, PathProvider>();

Asp.net相关问答推荐

ASP.NET MVC项目中的产品采购并发性测试

ASP.NET多行查询文本框中的多个名称并将结果添加到单个网格视图

格式化 DataBinder.Eval 数据

如何使用 javascript 获取 MVC 应用程序的基本 URL

如何在 ASP.NET 中使用时区?

加载特定 UpdatePanel 后如何调用客户端 javascript 函数

使用 JavaScript 禁用 ASP.NET 验证器

你如何确定哪个验证器失败了?

学习什么 - Ruby on Rails 或 ASP .NET MVC...鉴于熟悉 ASP .NET

IIS 7.5 上没有 asp.net 功能

IIS 6.0 通配符映射基准?

使用 ASPNet_Regiis 加密自定义配置部分 - 你能做到吗?

在 asp.net 中为动态 PDF 指定文件名

如何从后面的 ASP.NET 代码访问 HTML 表单输入

如何避免 ASP.NET MVC 中的 HttpRequestValidationException 呈现导致异常的相同视图

如何获取当前登录用户的角色列表

无法在 IIS 中启动网站 - W3SVC 正在运行

ASP.NET 身份,需要强密码

如何在 asp.net 中实现Access-Control-Allow-Origin标头

ConfigurationManager.AppSettings 缓存