启动后插入 OWIN 中间件组件

Plugging a OWIN middleware component after startup

如何在 Startup class 之外插入 OWIN 中间件?

我有这个 OWIN 中间件,它基本上为传入请求设置了一个身份验证端点。在我们的开发周期中,我们注意到几次远程元数据端点(基于 ADFS)发生故障,这会导致在尝试在应用程序启动时配置中间件时出现异常。 但是,即使中间件启动失败,我们也想让应用程序启动,并在稍后尝试初始化中间件。我如何在无法访问 'IAppBuilder' 界面的情况下执行此操作。

我使用 Katana 中的预构建中间件通过以下方法调用进行 ADFS 端点设置 -

app.UseActiveDirectoryFederationServicesBearerAuthentication(
                    new ActiveDirectoryFederationServicesBearerAuthenticationOptions
                    {
                        MetadataEndpoint = ConfigurationManager.AppSettings["ida:AdfsMetadataEndpoint"],
                        TokenValidationParameters = new TokenValidationParameters()
                        {
                            ValidAudience = ConfigurationManager.AppSettings["ida:Audience"]
                        }
                    });

OWIN 基础结构未设计为在执行启动代码后在运行时进行修改。有关详细信息,请参阅 Is it possible to add WsFederationAuthenticationOptions at runtime? 讨论。

如果您在特定中间件失败时遇到问题,请尝试将其包装在自定义的假实现中并手动处理(失败?)初始化。

查看与此相关的其他相关 SO 线程:

register new middleware to OWIN pipeline at runtime without restart application