我需要使用服务器。MapPath。由于库项目没有Startup.cs,我无法以正常方式应用。
首先,在使用库项目的项目的Startup.cs中注册HttpcontextAccessor服务
services.AddHttpContextAccessor();
然后在课堂上,
private static HttpContext _httpContext => new HttpContextAccessor().HttpContext;
private static IWebHostEnvironment _env => (IWebHostEnvironment)_httpContext.RequestServices.GetService(typeof(IWebHostEnvironment));
现在您可以在一个静态类和一个静态方法中访问它。
这对我有好处。如果有人需要的话。
中的另一个可能的解决方案。NET 6.0如下所示:
public static class MainHelper
{
public static IWebHostEnvironment _hostingEnvironment;
public static bool IsInitialized { get; private set; }
public static void Initialize(IWebHostEnvironment hostEnvironment)
{
if (IsInitialized)
throw new InvalidOperationException("Object already initialized");
_hostingEnvironment = hostEnvironment;
IsInitialized = true;
}
}
在Program.cs中注册HttpcontextAccessor并发送初始化参数
builder.Services.AddHttpContextAccessor();
MainHelper.Initialize(builder.Environment);
现在,您可以在项目中的任何位置使用_hostingEnvironment,如下所示:
var path = MainHelper._hostingEnvironment.ContentRootPath;
或
var path = MainHelper._hostingEnvironment.WebRootPath;