2017-07-19 6 views
1

OWINミドルウェアをStartupクラス外にプラグインする方法はありますか?起動後にOWINミドルウェアコンポーネントを差し込む

私は、基本的に着信要求のための認証エンドポイントを設定するこのOWINミドルウエアを持っています。私たちの開発サイクルでは、アプリの起動時にミドルウェアを設定しようとしている間に例外が発生するリモートメタデータエンドポイント(ADFSベース)が数回あることに気付きました。 しかし、ミドルウェアの起動に失敗してもアプリケーションを起動し、後でミドルウェアを初期化しようとします。 'IAppBuilder'インターフェースにアクセスすることなく、どうすればいいですか?

私は次のメソッド呼び出しを使用してADFSエンドポイントのセットアップのためのカタナで事前に構築されたミドルウェアを使用しています

-

OWINインフラストラクチャは、スタートアップコードを実行した後、実行時に変更されるように設計されていません
app.UseActiveDirectoryFederationServicesBearerAuthentication(
        new ActiveDirectoryFederationServicesBearerAuthenticationOptions 
        { 
         MetadataEndpoint = ConfigurationManager.AppSettings["ida:AdfsMetadataEndpoint"], 
         TokenValidationParameters = new TokenValidationParameters() 
         { 
          ValidAudience = ConfigurationManager.AppSettings["ida:Audience"] 
         } 
        }); 
+0

ミドルウェア。ミドルウェアをパイプラインに残しておくことをお勧めしますが、重い持ち上げを後のライフサイクルに遅らせてください。 – Nkosi

+0

私はまた、ADFS用のKatanaのあらかじめ構築されたミドルウェアのソースコードを調べて、ボトルネックがどこにあるかを確認することをお勧めします。 – Nkosi

+0

@ Nkosi私はミドルウェアがなぜ初期化に失敗したのかを知っています。しかし、私の質問は、それが初期化に失敗し、私のアプリケーションが継続して開始を完了した場合に備えて、後でミドルウェアをパイプラインに差し込む方法があります。 – Dibzmania

答えて

1

。詳細については、Is it possible to add WsFederationAuthenticationOptions at runtime?の説明を参照してください。

特定のミドルウェアが失敗したときに問題が発生した場合は、カスタムの偽装実装でラップし、(失敗した)初期化を手動で処理してみてください。

チェックアウトこれに関する他の関連するSOスレッド:

register new middleware to OWIN pipeline at runtime without restart application

Add Owin Pipeline Middleware after OwinStartup for new Tenant

あなたがのコンストラクタであまりをやろうとしているので、おそらくこれは、ミドルウェアの初期化に失敗し
+0

ありがとう@ Mikhail.That私の質問に答える。 – Dibzmania

+0

ミドルウェアを後で追加するようには設計されていませんが、手動で行うサンプルは次のとおりです。https://github.com/Tratcher/MiddlewareInjector/ – Tratcher

関連する問題