クライアント マシンに展開された Web サイトでエラーが発生します。ここでの質問に対する私の回答によると、最初は Windows 認証と複数のエラー プロバイダーが原因であると考えました。しかし、クライアントにログインするためにElmahを追加しましたが、あるパターンに気付きました....
コントローラーの署名は次のとおりです。
public ActionResult Class(int subjectId, int classGroupId)
失敗したリクエストは、elmah ログにリストされています。
HTTP_REFERER - https://someUrl.com/Results/Class/4372/16202
ただし、パス情報にはパラメーターが 1 つしかありません。
PATH_INFO - /Results/Class/4372/
エラーメッセージは
System.ArgumentException パラメーター ディクショナリに、'MyNamespace.Controllers.ResultsController' のメソッド 'System.Web.Mvc.ActionResult Class(Int32, Int32)' の null 非許容型 'System.Int32' のパラメーター 'subjectId' の null エントリが含まれています. オプションのパラメーターは、参照型または null 許容型であるか、オプションのパラメーターとして宣言する必要があります。パラメータ名: パラメータ
そのため、どこかでパラメーターを失っています。エラー メッセージに、2 番目のパラメーターではなく、1 番目のパラメーターが欠落していることが示されていることに興味があります。
このアクション用にルートを設定しました。
routes.MapRoute(
"ClassResults", // Route name
"{controller}/{action}/{subjectId}/{classGroupId}", // URL with parameters
new { controller = "Results", action = "Class" } // Parameter defaults
);
このエラーをデバッグする方法は?