我需要使用Server.MapPath。因为库项目没有Startup.cs,所以我无法以正常方式应用。
xzv2uavs1#
首先,在使用Library项目的项目的Startup.cs中注册HttpcontextAccessor服务,
services.AddHttpContextAccessor();
然后在课堂上,
private static HttpContext _httpContext => new HttpContextAccessor().HttpContext; private static IWebHostEnvironment _env => (IWebHostEnvironment)_httpContext.RequestServices.GetService(typeof(IWebHostEnvironment));
现在您可以在静态类和静态方法中访问它。这对我来说很管用,如果有人需要的话。
ippsafx72#
.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;
2条答案
按热度按时间xzv2uavs1#
首先,在使用Library项目的项目的Startup.cs中注册HttpcontextAccessor服务,
然后在课堂上,
现在您可以在静态类和静态方法中访问它。
这对我来说很管用,如果有人需要的话。
ippsafx72#
.NET 6.0中另一种可能的解决方案如下:
在Program.cs中注册HttpcontextAccessor并发送要初始化的参数
现在,您可以在项目中的任何位置使用**_hostingEnvironment**,如下所示:
或