gpt4 book ai didi

c# - 访问 ASP.NET Core Controller 中的连接字符串

转载 作者:太空狗 更新时间:2023-10-29 22:18:24 26 4
gpt4 key购买 nike

我正在使用 C# 和 .NET Framework 4.7 开发 ASP.NET Core 2.0.2 Web API。

我想从方法 Controller 中的 appsettings.json 获取连接字符串。

我是在 Startup.cs 中做的:

using Microsoft.Extensions.Configuration;

public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}

public IConfiguration Configuration { get; }

// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddDbContext<MyContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("MyContext")));

[ ... ]
}

但我不知道如何在 Controller 中执行此操作。我找到了这个教程,Configure an ASP.NET Core App ,但它使用一个类来访问配置的选项,public class MyOptions

我尝试像在 Startup.cs 中那样做,Configuration.GetConnectionString("MyContext"),但它无法识别 Configuration类。

我的问题是:如何在 Controller 中获取连接字符串?

最佳答案

你可以直接注入(inject)IConfiguration配置到你的controller中(它默认注册在DI容器中):

// using Microsoft.Extensions.Configuration;

public class YourController : Controller
{
public YourController (IConfiguration configuration)
{
var connString = Configuration.GetConnectionString("MyContext");
}

}

但无论如何考虑使用 IOptions模式,因为它会更灵活。

public class MyOptions
{
public string ConnString { get; set; }
}

public void ConfigureServices(IServiceCollection services)
{
// Adds services required for using options.
services.AddOptions();

services.Configure<MyOptions>(myOptions =>
{
myOptions.ConnString = Configuration.GetConnectionString("MyContext");
});

...
}

然后

  public YourController ((IOptions<MyOptions> optionsAccessor)
{
var connString = optionsAccessor.Value.ConnString;
}

关于c# - 访问 ASP.NET Core Controller 中的连接字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47527344/

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