簡體   English   中英

ASP.Net Core 2中的全局變量

[英]Global Variables in ASP.Net Core 2

我正在ASP.NET Core中開發一個Web應用程序,目前有一大組密鑰,例如條帶帳戶密鑰。 我們希望將它們全部放在json中,而不是讓它們在不同的類中傳播到整個項目中。 我已經嘗試將它們放在appsettings.json中但無法在任何地方訪問它們。

我經常使用連接字符串和其他全局常量來做這種事情。 首先為您需要的變量創建一個類。 在我的項目中,它是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;
    }
    ....
}

在我的情況下,我想要的唯一屬性是字符串,但我可以使用整個選項類。

在appsettings.json中保留變量。

{
    "foo": "value1",
    "bar": "value2",
}

創建AppSettings類。

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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM