如何使用net6类库中静态类中的appsettings.json



我想在类库中的静态类中使用appsettings.json值现在我知道了如何将json值绑定到像这样的程序.cs中的类

程序.cs

ConfigurationManager configuration = builder.Configuration;
builder.Services.Configure<APConfig>(configuration.GetSection(APConfig.Position));

APConfig.cs

public class APConfig
{
public const string Position = "APConfig";
public string RootPath { get; set; }
public string API_URL { get; set; }
public string TOKEN { get; set; }
public string pwdkey { get; set; }
public string pwdkey1 { get; set; }
public string pwdkey2 { get; set; }
public string GetProperty(string keyStr)
{
string value = Utility.DecryptTagContent((string)this.GetType().GetProperty(keyStr).GetValue(this));
return value;
}
}

如何在静态类中使用绑定的APConfig?

我找到了一个解决方案:

public static class HttpContext
{
private static IHttpContextAccessor _accessor;
public static Microsoft.AspNetCore.Http.HttpContext Current => _accessor.HttpContext;
internal static void Configure(IHttpContextAccessor accessor)
{
_accessor = accessor;
}
}
public static class StaticHttpContextExtensions
{
public static void AddHttpContextAccessor(this IServiceCollection services)
{
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
}
public static IApplicationBuilder UseStaticHttpContext(this IApplicationBuilder app)
{
var httpContextAccessor = app.ApplicationServices.GetRequiredService<IHttpContextAccessor>();
HttpContext.Configure(httpContextAccessor);
return app;
}
}

然后使用

HttpContext.Current.Session.SetString(key, value);
HttpContext.Current.Session.GetString(key);

我也喜欢对配置值进行静态访问。

这个StackOverflow问题有几个答案可能会有所帮助:ASP.NET Core--从静态类访问配置

关键是您需要在启动时运行的代码,该代码将IConfiguration对象或其值分配给静态变量。

然后,您可以对这些值进行迭代,并将它们放在一个静态列表中。类似于公共静态List<KeyValuePair<string, string>> Config= _config.AsEnumerable().ToList();或者您可以将这些值放在公共静态ReadOnlyDictionary<string, object>

访问配置需要一个IConfiguration实例,该实例可以使用依赖注入获得。

然后,您的类应该是非静态的,并具有DI构造函数。

相关内容

  • 没有找到相关文章

最新更新