1

マルチテナント ソリューションを備えた .net mvc4 アプリケーションがあります。これが設定される方法は、クライアント用のファイルを取得しようとすることであり、見つからない場合はグローバル ファイルを取得します。

これはすべてうまく機能し、RouteConfig.cs の一番下に次の行があります。

routes.Add("FaviconRoute", new Route("favicon.ico", new StaticFileRouteHandler("favicon.ico", "Content", "", true)));

StaticFileRouteHandler は、グローバル ファイルまたはテナント ファイルのいずれかをロードし、うまく機能するカスタム クラスです。ただし、次のように elmah (エラー ハンドラ) から多くのエラーが発生することに気付きました。

404 Http The controller for path '/favicon.ico' was not found or does not implement IController.

だから私はこれを修正しようとしてきましたが、それを理解することはできません。routeconfig で回線を高くすると、他のルートが妨害されます (すべてのルートが site.com/favicon.ico?param1... になります)。

使ってみましたroutes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });

しかし、コードが実行されないため、すべてのテナントがグローバル ファイルを取得します。

リンクする場合、ファビコンをルートに配置する必要がなくなることはわかっていますが、静的ファイル ハンドラーがファイルへのパスを変更する代わりに適切なファイルを選択するこのソリューションが気に入っています (コードを~/clients/clientA/favicon.ico のようなパスを含むクライアント

したがって、ルートのファビコンのみをキャッチし、他には何もキャッチしないように、ルートをより具体的にするだけで解決できれば素晴らしいと思います。だから私はそれをrouteconfig.csの一番上に置くことができます

最後に、誰かが elmah からの完全なエラーを見たい場合は、ここにあります: http://db.tt/3QBxIxmb

4

1 に答える 1