.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版权协议,转载请附上原文出处链接和本声明。