繁体   English   中英

适配器是否将中间件管道数量限制为仅允许 2 个 IMiddleware 与 Use() 一起使用?

[英]Do Adapters limit the Middleware pipeline count to only allow 2 IMiddleware to be used with Use()?

通过测试BotBuilder Samples ,我试图扩展其中一个示例以在管道中使用多个中间件类。 我发现 BotAdapter 仅使用添加的前 2 个 IMiddleware 类。 即使我尝试了 BotAdapter 的MiddlewareSet.Use()方法,它仍然仅限于添加的第 2 个拳头。 IMiddleware 的文档没有 state 关于管道仅限于添加的前 2 个的任何内容。 有谁知道这件事以及如何超越这 2 个限制?

我们不能使用技能,因为我们希望避免在我们的组织中注册数十到数百个应用程序。 任何帮助表示赞赏。

伪代码示例显示调用多个 Use() 方法将限制为 2 的位置:

        public AdapterWithErrorHandler(IConfiguration configuration, ILogger<BotFrameworkHttpAdapter> logger, ConversationState conversationState, SkillHttpClient skillClient = null, SkillsConfiguration skillsConfig = null)
        : base(configuration, logger)
    {
        ...
        Use(new LoggerMiddleware1(logger));
        Use(new LoggerMiddleware2(logger));
        Use(new LoggerMiddleware3(logger)); // <--- Never gets invoked!!!
        ...
    }

问题是其中一个中间件没有调用next导致管道中的下一个中间件没有被调用。 感谢评论者的帮助。

await next(cancellationToken).ConfigureAwait(false);

需要在OnTurnAsync处理程序中调用此行以触发链中的下一个中间件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM