2009-08-20 11 views
1

私のmvcアプリケーションに送信されたリクエストの実行時間を見積もるために、私はMVCアプリケーションのglobal.asaxのEndRequestイベントの経過時間をlog4netで記録しています。 しかし、リソース(css、images)を含むすべての要求に対してEndRequestが呼び出されます。私は能力があり、2種類の要求を区別することを好むでしょう。asp.net mvc:このリクエストはルーティングされているかどうか

ルーティングされたリクエストを静的コンテンツリクエストから分離する方法はありますか?私はこのフックスポットを放棄し、コード内の別のポイントで実行する必要がありますか?

答えて

1

私は通常ControllerBaseクラスからすべてのコントローラを派生します。このクラスには、OnActionExecutingOnActionExecutedメソッドオーバーライドに必要なログが挿入されます。

これは、私のすべてのコントローラのアクションのログを記録するための1つの中心的な場所+通常はすべての私のコントローラ全体のすべてのアクションメソッドに積み重なっていたより多くのものを与えます。

+0

私はこれを最初にやりたいとは思っていませんでしたが、プロジェクトのこの時点で実際に摩擦が少ない道です。 – samy

+0

あなたが望むものを達成する最も簡単で最も実用的な方法...もちろん、一部の人はロギングが邪魔であると感じるかもしれません。なぜなら、これはすべてのコントローラの一部なので、代わりにコードをアクション属性に追加し、ベースコントローラ上で – mookid8000

1

Phil Haack's Route Debuggerをご覧ください。

+1

これは純金です。私はフィル・ハークのコードを以下のよ場合:) –

+0

、彼が行うことは次のとおりです。 - ルート を登録する - そして、すべてのリクエスト IにハードコードされたHTMLページを返す特定のHTTPHandlerのを、返すものと、すべてのルートハンドラを上書き実際にそこにログインしている実行時間をどのようにフックするのかは分かりません。私ができることは次のとおりです: - 開始要求と終了要求を記録するhttphandlerを作成します - 関連する各ルートのroutehandlerを、httphandler のログを渡すroutehandlerに置き換えてください。しかし、mookidの提案をすることはできません。以下... 私に何かが不足していますか? – samy

+0

上記のひどいフォーマットについて申し訳ありませんが、テキストエリアが私のブレークラインを食べました... – samy

関連する問題