using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;
namespace AspNetCorePathMapping
{
public class HomeController : Controller
{
private readonly IHostingEnvironment _hostingEnvironment;
public HomeController(IHostingEnvironment hostingEnvironment)
{
_hostingEnvironment = hostingEnvironment;
}
public ActionResult Index()
{
string webRootPath = _hostingEnvironment.WebRootPath;
string contentRootPath = _hostingEnvironment.ContentRootPath;
return Content(webRootPath + "\n" + contentRootPath);
}
}
}
通過WebRootPath的使用,基本可以達到Server.MapPath同樣的效果。但是這是在controller類中使用。
在普通類庫中獲取:
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace HH.Util
{
public static class CoreHttpContext
{
private static Microsoft.AspNetCore.Hosting.IHostingEnvironment _hostEnviroment;
public static string WebPath => _hostEnviroment.WebRootPath;
public static string MapPath(string path)
{
return Path.Combine(_hostEnviroment.WebRootPath, path);
}
internal static void Configure(Microsoft.AspNetCore.Hosting.IHostingEnvironment hostEnviroment)
{
_hostEnviroment = hostEnviroment;
}
}
public static class StaticHostEnviromentExtensions
{
public static IApplicationBuilder UseStaticHostEnviroment(this IApplicationBuilder app)
{
var webHostEnvironment = app.ApplicationServices.GetRequiredService<Microsoft.AspNetCore.Hosting.IHostingEnvironment>();
CoreHttpContext.Configure(webHostEnvironment);
return app;
}
}
}
然后在Startup.cs的Configure方法中:
app.UseStaticHostEnviroment();
只需要將原來的Server.Path替換為CoreHttpContext.MapPath就可以
原文:https://blog.csdn.net/shanghaimoon/article/details/114338839