POSTの依存部分を期待しているMVCアプリのデバッグに問題があります。
すべてのPOSTリクエストをインターセプトするようにMVC4アプリケーションを構成して、投稿しようとしているURLと応答を確認する簡単な方法はありますか?
POSTの依存部分を期待しているMVCアプリのデバッグに問題があります。
すべてのPOSTリクエストをインターセプトするようにMVC4アプリケーションを構成して、投稿しようとしているURLと応答を確認する簡単な方法はありますか?
通常、グローバルフィルターが必要です。ただし、ルートが決定されるまでトリガーされないため、この状況では役に立たない可能性があります。
試すことができることの1つはApplication_BeginRequest
、global.asaxにメソッドを追加することです。何もする必要はありません。ブレークポイントを設定し、Request.AppRelativeCurrentExecutionFilePath
(またはRequestの他のメンバー)を調べて、インバウンドパスが何であるかを確認するだけです。
protected void Application_BeginRequest()
{
if (Request.HttpMethod.Equals("post", StringComparison.InvariantCultureIgnoreCase))
{ // Breakpoint here
}
}
「グローバルフィルター」は、動作などをパイプラインに注入するための推奨される方法です。MVCはすでにこれらのいくつかを実装しており、独自に拡張または実装することもできます。
私が昨年実装した具体的な例の1つは、クライアントサイトにパスワードを期限切れにする機能があることです。素晴らしい; ユーザーが指示されたときにすぐに変更すると、正常に動作します。しかし、サイトの別の部分に移動するだけで、次にログインするまでプロンプトが表示されないことがわかりました。そこで、パスワードの有効期限が切れているかどうか(および、すでに確認済みかどうかを確認するグローバルフィルターを追加しました)このセッションで)、その場合は、「パスワードの変更」画面にリダイレクトされます。それを変更した後、彼らは以前のどこにでも戻ることができました。
ただし、ルーティングまたはバインディングの問題を把握するためのこれの欠点は次のとおりです。ルーティングエンジンは、グローバルフィルタがリクエストを取得する前に、リクエストをすでに評価しています。ターゲットアクションの識別に失敗した場合、フィルターはヒットしません。したがって、この場合、のような低レベルの機能Application_BeginRequest
が唯一の現実的なオプションです。