首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从ASP.NET内核的扩展方法中使用中间件配置

从ASP.NET内核的扩展方法中使用中间件配置
EN

Stack Overflow用户
提问于 2018-02-05 08:10:21
回答 2查看 3K关注 0票数 1

我已经开发了一段ASP.NET核心中间件。我在这篇文章中简化了中间件,以使问题变得更清楚。

中间件在Startup.cs中配置如下:

代码语言:javascript
运行
复制
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    ...
    app.UseMyMiddleware(42);
    ...
}

整数(42)存储在中间件实例中,一切都很好。

现在,我想创建一些助手方法作为扩展方法:

代码语言:javascript
运行
复制
public static int Add(this int i)
{
    return i + TODO;
}

我希望方法将i的值添加到发送到中间件的值(42)中。

目前,我已经在中间件内部的公共静态变量中保存了42的值,并通过扩展方法访问了这个值:

代码语言:javascript
运行
复制
public static int Add(this int i)
{
    return i + MyMiddleware.Value;
}

由于种种原因,我不喜欢这个解决方案。对于如何以更好的方式解决这一问题,我们将不胜感激。

EN

Stack Overflow用户

发布于 2018-02-05 08:22:04

为什么不使用appsettings.json来存储这些信息,然后使用内置的DI将其注入到中间件中呢?

appsettings.json

代码语言:javascript
运行
复制
{
    "MiddlewareConfiguration":
    {
        "MiddlewareValue":42,
    }
}

Startup.cs

代码语言:javascript
运行
复制
public IServiceProvider ConfigureServices(IServiceCollection services)
{
    services.Configure<MiddlewareConfiguration>(configuration.GetSection("MiddlewareConfiguration"));
}

MiddlewareConfiguration.cs

代码语言:javascript
运行
复制
public class MiddlewareConfiguration
{
    public int MiddlewareValue { get; set; }
}

然后,您可以将其插入到中间件中,例如:

代码语言:javascript
运行
复制
public async Task Invoke(HttpContext context, IOptions<MiddlewareConfiguration> config)
票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48618160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档