Appsettings 和中间件 Core 2.1
Appsettings and middleware Core 2.1
我制作了一个自定义中间件,现在我想访问我的解决方案中另一个项目中的应用程序设置。是不是应该在中间件的构造函数中注入IConfiguration对象,并加上Microsoft.Extensions.Configuration的using语句?或者有更好的方法吗?
我正在使用带有 Core 2.1 的 ASP.net 网页。
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Configuration;
using System;
using System.Threading.Tasks;
public class MyMiddleware
{
public IConfiguration _configuration;
public MyMiddleware(RequestDelegate next, IConfiguration config)
{
_next = next;
_ configuration = config;
}
如果您不需要将所有配置传递给您的中间件,而只需要一部分,您可以使用
IOptions<T>
创建MyConfig.csClass文件:
public class MyConfig
{
public string MyConfig1 {get; set;}
public string MyConfig2 {get; set;}
}
在 Startup.cs
中的 ConfigureServices 方法中
public void ConfigureServices(IServiceCollection services)
{
services.Configure<MyConfig>(Configuration.GetSection("MyConfig"));
}
在你的中间件中
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Configuration;
using System;
using System.Threading.Tasks;
public class MyMiddleware
{
private readonly IOptions<MyConfig> _appSettings;
public MyMiddleware(RequestDelegate next, IOptions<MyConfig> config)
{
_next = next;
_configuration = config;
}
public MyMethod()
{
_configuration.Value.MyConfig1
}
}
在 appsettings.json 文件中:
{
"AppSettings": {
"AppId": "0001",
"AppName": "xxxx",
},
"MyConfig": {
"MyConfig1": "xxxxxxx",
"MyConfig2": "xxxxxxx",
},
}
我制作了一个自定义中间件,现在我想访问我的解决方案中另一个项目中的应用程序设置。是不是应该在中间件的构造函数中注入IConfiguration对象,并加上Microsoft.Extensions.Configuration的using语句?或者有更好的方法吗?
我正在使用带有 Core 2.1 的 ASP.net 网页。
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Configuration;
using System;
using System.Threading.Tasks;
public class MyMiddleware
{
public IConfiguration _configuration;
public MyMiddleware(RequestDelegate next, IConfiguration config)
{
_next = next;
_ configuration = config;
}
如果您不需要将所有配置传递给您的中间件,而只需要一部分,您可以使用
IOptions<T>
创建MyConfig.csClass文件:
public class MyConfig
{
public string MyConfig1 {get; set;}
public string MyConfig2 {get; set;}
}
在 Startup.cs
中的 ConfigureServices 方法中public void ConfigureServices(IServiceCollection services)
{
services.Configure<MyConfig>(Configuration.GetSection("MyConfig"));
}
在你的中间件中
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Configuration;
using System;
using System.Threading.Tasks;
public class MyMiddleware
{
private readonly IOptions<MyConfig> _appSettings;
public MyMiddleware(RequestDelegate next, IOptions<MyConfig> config)
{
_next = next;
_configuration = config;
}
public MyMethod()
{
_configuration.Value.MyConfig1
}
}
在 appsettings.json 文件中:
{
"AppSettings": {
"AppId": "0001",
"AppName": "xxxx",
},
"MyConfig": {
"MyConfig1": "xxxxxxx",
"MyConfig2": "xxxxxxx",
},
}