gpt4 book ai didi

configuration - 在 mvc6 中全局使用 IConfiguration

转载 作者:行者123 更新时间:2023-12-04 01:56:35 26 4
gpt4 key购买 nike

我可能已经盯着这个很久了,但是最近几天我已经跳入了用于 asp.net 的 MVC6,虽然我真的很喜欢这个,但我似乎找不到一种方便的方式来访问它之后的配置在 Start.cs 中定义为

Configuration = new Configuration()
.AddJsonFile("config.json")
...

那么,我需要将它添加到 DI 中还是已经存在?或者我应该在需要使用它时创建一个新实例,因为可以创建不同的配置(例如 IIdentityMessageService)创建一个 sendgrid.json 并将其加载到服务本身中?

可能有一个非常简单的解决方案,但就像我说的那样,我已经看了好几天了。

最佳答案

仅在 Startup.cs 中加载配置。如果您稍后在其他地方需要它们,您可以将这些值加载到适当的 POCO 中并将它们注册到 DI 中,以便您可以将它们注入(inject)您需要的地方。这允许您以对您的应用程序有意义的方式在不同的文件和不同的 POCO 中组织您的配置。在依赖注入(inject)中已经内置了对此的支持。以下是您的操作方法:

将您的配置放入的 POCO:

public class SomeOptions
{
public string EndpointUrl { get; set; }
}

您的 Startup.cs 将配置加载到 POCO 并在 DI 中注册。

public class Startup
{
public Startup()
{
Configuration = new Configuration()
.AddJsonFile("Config.json")
.AddEnvironmentVariables();
}

public IConfiguration Configuration { get; set; }

public void Configure(IApplicationBuilder app)
{
app.UseMvc();
}

public void ConfigureServices(IServiceCollection services)
{
services.Configure<SomeOptions>(options =>
options.EndpointUrl = Configuration.Get("EndpointUrl"));

services.AddMvc();
}
}

然后在您的 Controller 中通过依赖注入(inject)获取您在 Startup.cs 中创建的配置 POCO,如下所示:

public class SomeController
{
private string _endpointUrl;
public SomeController(IOptions<SomeOptions> options)
{
_endpointUrl = options.Options.EndpointUrl;
}
}

使用 1.0.0-beta1 构建的 aspnet5 进行了测试。

如需更多信息,请参阅 The fundamentals of ASP.Net 5 Configuration .

关于configuration - 在 mvc6 中全局使用 IConfiguration,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27179370/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com