【发布时间】:2017-12-24 06:59:24
【问题描述】:
如何在 Startup 类之外插入 OWIN 中间件?
我有这个 OWIN 中间件,它基本上为传入请求设置了一个身份验证端点。在我们的开发周期中,我们多次注意到远程元数据端点(基于 ADFS)出现故障,这会在尝试在应用程序启动时配置中间件时导致异常。 但是,即使中间件初始化失败,我们也希望让应用程序启动,并在稍后尝试初始化中间件。在没有访问“IAppBuilder”界面的情况下如何做到这一点。
我正在使用 Katana 中的预构建中间件进行 ADFS 端点设置,使用以下方法调用 -
app.UseActiveDirectoryFederationServicesBearerAuthentication(
new ActiveDirectoryFederationServicesBearerAuthenticationOptions
{
MetadataEndpoint = ConfigurationManager.AppSettings["ida:AdfsMetadataEndpoint"],
TokenValidationParameters = new TokenValidationParameters()
{
ValidAudience = ConfigurationManager.AppSettings["ida:Audience"]
}
});
【问题讨论】:
-
这很可能在初始化中间件时失败,因为您试图在中间件的构造函数中做太多事情。我建议将中间件留在管道中,但将繁重的工作推迟到其生命周期的后期。
-
我还建议检查 Katana 中用于 ADFS 的预构建中间件的源代码,以了解瓶颈在哪里。
-
@Nkosi 我知道中间件无法初始化的原因。但是我的问题是,如果它无法初始化并且我的应用程序继续并完成启动,有没有办法稍后在管道中插入中间件。
-
没有。管道是在启动时通过构建器建立的。构建完成后,您将无法再修改中间件管道。 review source code
-
ADFS middle-ware source code 检查初始化期间做了什么,看看你是否能想出一个解决办法。
标签: asp.net owin middleware katana