Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 适配器是否将中间件管道计数限制为仅允许将2个IMIDleware与Use()一起使用?_C#_Asp.net Core_Botframework_Middleware - Fatal编程技术网

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

C# 适配器是否将中间件管道计数限制为仅允许将2个IMIDleware与Use()一起使用?,c#,asp.net-core,botframework,middleware,C#,Asp.net Core,Botframework,Middleware,通过测试,我尝试扩展其中一个示例,以便在管道中使用多个类。我发现BotAdapter只使用添加的前两个IMidware类。即使我尝试BotAdapter的方法,它仍然仅限于添加的First 2。Imidware的文档没有说明管道仅限于前两个添加的管道。有人知道这方面的情况吗?以及如何通过这2个限制 我们无法使用技能,因为我们希望避免在我们的组织中注册数十到数百个应用程序。感谢您的帮助 显示调用多个Use()方法的位置限制为2的伪代码示例: public AdapterWithEr

通过测试,我尝试扩展其中一个示例,以便在管道中使用多个类。我发现BotAdapter只使用添加的前两个IMidware类。即使我尝试BotAdapter的方法,它仍然仅限于添加的First 2。Imidware的文档没有说明管道仅限于前两个添加的管道。有人知道这方面的情况吗?以及如何通过这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!!!
        ...
    }
PublicAdapterWithErrorHandler(IConfiguration配置、ILogger记录器、ConversationState会话状态、SkillHttpClient skillClient=null、SkillsConfiguration skillsConfig=null)
:基本(配置、记录器)
{
...
使用(新日志软件1(记录器));
使用(新日志软件2(记录器));

使用(新的LoggerMiddleware3(logger));//问题在于,中间件的一个没有调用
next
,导致管道中的下一个中间件没有被调用。感谢评论员的帮助

await next(cancellationToken).ConfigureAwait(false);

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

Hi,您能在LoggerMaddware(1-3)中发布日志吗来源?中间件的数量没有限制。顺便问一下,您使用什么来记录日志?如果中间件3没有被调用,这意味着中间件2没有调用其
next
委托。这可能是一个选项,我现在可以想到的另一个选项是日志本身,日志跟踪可能会在日志缓存中丢失,特别是如果您如果在自动测试中重新运行此程序,则记录器未正确刷新。如果未调用中间件,则意味着它以某种方式短路。您需要检查before中间件,以找出这种短路的可能性。@MiguelVeloso谢谢!!!我刚才回到了代码,您是对的,我没有打电话next()在一个中间件中,它停止了流。我的错误:(