我已经开发了一段ASP.NET核心中间件。我在这篇文章中简化了中间件,以使问题变得更清楚。
中间件在Startup.cs中配置如下:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
...
app.UseMyMiddleware(42);
...
}整数(42)存储在中间件实例中,一切都很好。
现在,我想创建一些助手方法作为扩展方法:
public static int Add(this int i)
{
return i + TODO;
}我希望方法将i的值添加到发送到中间件的值(42)中。
目前,我已经在中间件内部的公共静态变量中保存了42的值,并通过扩展方法访问了这个值:
public static int Add(this int i)
{
return i + MyMiddleware.Value;
}由于种种原因,我不喜欢这个解决方案。对于如何以更好的方式解决这一问题,我们将不胜感激。
发布于 2018-02-05 08:22:04
为什么不使用appsettings.json来存储这些信息,然后使用内置的DI将其注入到中间件中呢?
appsettings.json
{
"MiddlewareConfiguration":
{
"MiddlewareValue":42,
}
}Startup.cs
public IServiceProvider ConfigureServices(IServiceCollection services)
{
services.Configure<MiddlewareConfiguration>(configuration.GetSection("MiddlewareConfiguration"));
}MiddlewareConfiguration.cs
public class MiddlewareConfiguration
{
public int MiddlewareValue { get; set; }
}然后,您可以将其插入到中间件中,例如:
public async Task Invoke(HttpContext context, IOptions<MiddlewareConfiguration> config)https://stackoverflow.com/questions/48618160
复制相似问题