ASP.Net Core 2 中的全局变量
Global Variables in ASP.Net Core 2
我正在 ASP.NET Core 中开发 Web 应用程序,目前有大量密钥,例如条带帐户密钥。我不想将它们分散在整个项目中的不同 类 中,而是想将它们放在一起 json 中,以便可以全局访问它们。我试过将它们放在 appsettings.json 但无法在任何地方访问它们。
我经常用连接字符串和其他全局常量做这种事情。首先为您需要的那些变量创建一个 class 。在我的项目中它是 MDUOptions
但你想要什么都行。
public class MDUOptions
{
public string mduConnectionString { get; set; }
public string secondaryConnectionString { get; set; }
}
现在在您的 Startup.cs ConfigureServices 方法中:
Action<MDU.MDUOptions> mduOptions = (opt =>
{
opt.mduConnectionString = Configuration["ConnectionStrings:mduConnection"];
});
services.Configure(mduOptions);
services.AddSingleton(resolver => resolver.GetRequiredService<IOptions<MDUOptions>>().Value);
现在您可以使用 DI 在代码中访问它:
public class PropertySalesRepository : IPropertySalesRepository
{
private static string _mduDb;
public PropertySalesRepository(MDUOptions options)
{
_mduDb = options.mduConnectionString;
}
....
}
在我的例子中,我唯一想要的 属性 是字符串,但我可以使用整个选项 class。
在appsettings.json中保留变量。
{
"foo": "value1",
"bar": "value2",
}
创建 AppSettings class.
public class AppSettings
{
public string foo { get; set; }
public string bar { get; set; }
}
在Startup.cs文件寄存器中。
public IServiceProvider ConfigureServices(IServiceCollection services)
{
services.Configure<AppSettings>(Configuration);
}
用法,
public class MyController : Controller
{
private readonly IOptions<AppSettings> _appSettings;
public MyController(IOptions<AppSettings> appSettings)
{
_appSettings = appSettings;
}
var fooValue = _appSettings.Value.foo;
var barValue = _appSettings.Value.bar;
}
我正在 ASP.NET Core 中开发 Web 应用程序,目前有大量密钥,例如条带帐户密钥。我不想将它们分散在整个项目中的不同 类 中,而是想将它们放在一起 json 中,以便可以全局访问它们。我试过将它们放在 appsettings.json 但无法在任何地方访问它们。
我经常用连接字符串和其他全局常量做这种事情。首先为您需要的那些变量创建一个 class 。在我的项目中它是 MDUOptions
但你想要什么都行。
public class MDUOptions
{
public string mduConnectionString { get; set; }
public string secondaryConnectionString { get; set; }
}
现在在您的 Startup.cs ConfigureServices 方法中:
Action<MDU.MDUOptions> mduOptions = (opt =>
{
opt.mduConnectionString = Configuration["ConnectionStrings:mduConnection"];
});
services.Configure(mduOptions);
services.AddSingleton(resolver => resolver.GetRequiredService<IOptions<MDUOptions>>().Value);
现在您可以使用 DI 在代码中访问它:
public class PropertySalesRepository : IPropertySalesRepository
{
private static string _mduDb;
public PropertySalesRepository(MDUOptions options)
{
_mduDb = options.mduConnectionString;
}
....
}
在我的例子中,我唯一想要的 属性 是字符串,但我可以使用整个选项 class。
在appsettings.json中保留变量。
{
"foo": "value1",
"bar": "value2",
}
创建 AppSettings class.
public class AppSettings
{
public string foo { get; set; }
public string bar { get; set; }
}
在Startup.cs文件寄存器中。
public IServiceProvider ConfigureServices(IServiceCollection services)
{
services.Configure<AppSettings>(Configuration);
}
用法,
public class MyController : Controller
{
private readonly IOptions<AppSettings> _appSettings;
public MyController(IOptions<AppSettings> appSettings)
{
_appSettings = appSettings;
}
var fooValue = _appSettings.Value.foo;
var barValue = _appSettings.Value.bar;
}