Shr*_*kar 4 c# asp.net-core asp.net-core-2.1
我们可以像这样将 IConfiguration 注入到类中:
//Controller
AppSettings obj = new AppSettings(_configuration);
//Class
public class AppSettings
{
private IConfiguration _configuration;
public AppSettings(IConfiguration configuration)
{
_configuration = configuration;
}
...
}
Run Code Online (Sandbox Code Playgroud)
现在我正在尝试将 IConfiguration 注入到我的 ActionFilter 中。什么是最好的方法来做到这一点?
在 .NET Core 2.x 中,IConfiguration
已经注册到 DI,因此可以获取。通常你只会IConfiguration
通过构造函数注入来注入:
public class MyActionFilter : ActionFilterAttribute
{
private readonly IConfiguration _config;
public MyActionFilter(IConfiguration config)
{
_config = config;
}
}
Run Code Online (Sandbox Code Playgroud)
这会起作用,但这也意味着当您使用操作过滤器时,您需要提供IConfiguration
以下参数之一:
如果您不必手动提供依赖项会更好。
GetService<>
替代解决它的一种方法是在其中一个覆盖上获取所需的服务:
using Microsoft.AspNetCore.Mvc.Filters;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
public class MyActionFilter : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext context)
{
var config = context.HttpContext.RequestServices.GetService<IConfiguration>();
string recaptchaVersion = config.GetValue<string>("recaptcha:version");
base.OnActionExecuting(context);
}
}
Run Code Online (Sandbox Code Playgroud)
如果你appsettings.json
有这样的事情:
{
"recaptcha": {
"secretKey": "xxx",
"siteKey": "xxx",
"version": "v3"
}
}
Run Code Online (Sandbox Code Playgroud)
然后config.GetValue<>
应该给你你想要访问的内容
归档时间: |
|
查看次数: |
1350 次 |
最近记录: |