访问 ASP.NET Core 控制器内的连接字符串 [英] Access Connection String inside an ASP.NET Core controller
问题描述
我正在使用 C# 和 .NET Framework 4.7 开发 ASP.NET Core 2.0.2 Web API.
I'm developing an ASP.NET Core 2.0.2 Web API with C# and .NET Framework 4.7.
我想从方法控制器中的 appsettings.json
获取连接字符串.
I want to get the connection string from appsettings.json
in a method's controller.
我在 Startup.cs 中做到了:
I did it in 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")));
[ ... ]
}
但我不知道如何在控制器中做到这一点.我找到了这个教程,Configure an ASP.NET Core App,但它使用一个类来访问配置的选项,public class MyOptions
But I don't know how to do it in a controller. I have found this tutorial, Configure an ASP.NET Core App, but it uses a class to access configuration's options, public class MyOptions
我尝试像在 Startup.cs
、Configuration.GetConnectionString("MyContext")
中那样做,但它无法识别 Configuration
代码>类.
I have tried to do it like in Startup.cs
, Configuration.GetConnectionString("MyContext")
, but it doesn't recognize Configuration
class.
我的问题是:如何获取控制器中的连接字符串?
My question is: How can I get the connection string in a controller?
推荐答案
你可以直接将IConfiguration配置
注入你的控制器中(默认在DI容器中注册):
You may directly inject IConfiguration configuration
into your controller (it is registered in DI container by default) :
// using Microsoft.Extensions.Configuration;
public class YourController : Controller
{
public YourController (IConfiguration configuration)
{
var connString = Configuration.GetConnectionString("MyContext");
}
}
<小时>
但无论如何请考虑使用 IOptions模式,因为它会更灵活.
But anyway consider using the IOptions pattern as it will be more flexible.
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;
}
这篇关于访问 ASP.NET Core 控制器内的连接字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!