如何在ASP.Net core中也弄一个MapPath方法

.netcore之前的项目中凡是用到绝对路径的地方,大都有已经内置的Server.MapPath(),现怎么也实现一个这样的方法呢?

Cut the crap,let's see the code!

工具类HttpContextCore

public static class HttpContextCore
    {
        private static IWebHostEnvironment _hostEnviroment;

        public static string WebPath => _hostEnviroment.WebRootPath;
        public static string RootPath => _hostEnviroment.ContentRootPath;

        public static void Configure(IWebHostEnvironment hostEnviroment)
        {
            _hostEnviroment = hostEnviroment;
        }

        public static string MapPath(string path)
        {
            return Path.Combine(_hostEnviroment.WebRootPath, path);
        }
    }

在Program的Main函数中,获取实现IWebHostEnviroment接口的对象

 public class Program
    {
        public static void Main(string[] args)
        {
            IHost host = CreateHostBuilder(args).Build();
            
            //重点! 在host建立好后就可以取出服务对象 IWebHostEnviroment
            using (IServiceScope scope = host.Services.CreateScope())
            {
                IWebHostEnvironment webHostEnvironment = scope.ServiceProvider.GetService<IWebHostEnvironment>();
                CoreHttpContext.Configure(webHostEnvironment);
            }

            host.Run();
        }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });
    }
}

完成!


版权声明:本文为m0_62367247原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。