如何在库项目中获得对IWebHostEnvironment的引用?(也在静态类中:()



我需要使用服务器。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;

相关内容

  • 没有找到相关文章

最新更新