よくあることですが、残念ながら別の問題を引き起こす 1 つの問題に対する優れた解決策があります。
より大きな親の一部であるさまざまな組織のメンバーにサービスを提供するアプリがあります。組織にはカスタム URL が必要です。したがって、組織 A のメンバーは URLhttps://server/vdir/OrgA
にアクセスし、組織 B のメンバーは URL にアクセスしますhttps://server/vdir/OrgB
。
これらは両方とも、アプリ内のまったく同じ領域、コントローラー、およびアクションにマップされますが、一部のカスタム ビュー コンテンツのためにエンド ユーザーには異なって見える場合があります。
このアプリを使用している組織のリストは動的であり、すべての組織が同時に使用を開始するわけではないため、ルート マッピングをプログラムで設定することから始めました。ターゲット エリアで、RegisterArea メソッドをオーバーライドし、アクティブな組織をデータベースから取得して、それぞれに対してカスタムの context.MapRoute 呼び出しを実行します。
このようにすることで、組織のサイトパス ("OrgA") を含む URL が、意味のあるエリア名を含む URL とまったく同じように見え、実際にはエリアにマップされるという別の問題を回避できます。組織のサイトパスを仮想エリア名として扱い、それらをターゲット エリアに明示的にマッピングすることで、特定の誤指示を回避しました。
そして、これはうまく機能します。ただし、すべて Application_Start で実行されます。組織を追加すると、アプリを再起動するまでアクティブになりません。
だから私の質問は2つです:
- これを行うための私のより良いアプローチはありますか? 私はこの問題を調査しましたが、関連するキーワードがいたるところにあるため、針と干し草の山のような状況でした。
- ない場合、アプリを再起動せずにルート マッピングを更新する方法はありますか?