[解決済み] asp.netのmvc例外が断続的に発生します。"パブリックアクションメソッド ABC がコントローラ XYZ で見つかりませんでした。"
質問
asp.net mvcがアクションメソッドを見つけられないという例外が断続的に発生します。以下がその例外です。
パブリックアクションメソッド 'Fill' が コントローラに見つかりませんでした。 'Schoon.Form.Web.Controllers.ChrisController' に見つかりませんでした。
このアプリケーションはほとんどの場合動作するので、ルーティングは正しく設定されていると思います。以下はコントローラのアクションメソッドです。
[ActionName("Fill")]
[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post), UserIdFilter, DTOFilter]
public ActionResult Fill(int userId, int subscriberId, DisplayMode? mode)
{
//…
}
ルートです。
routes.MapRoute(
"SchoonForm",
"Form/Fill/{subscriberId}",
new { controller = "ChrisController", action = "Fill" },
new { subscriberId = @"\d+" }
);
そして、これがそのスタックです。
System.Web.HttpException: パブリック アクションメソッド 'Fill' が コントローラに見つかりませんでした。 'Schoon.Form.Web.Controllers.ChrisController' に見つかりませんでした。 で で、System.Web.Mvc.Controller.HandleUnknownAction(String actionName) in C:\DevThirdParty⇄Src⇄SystemWebMvc⇄MvcController.cs:line 197 at System.Web.Mvc.Controller.ExecuteCore() in C:\DeviceThirdParty⇄SystemWebMvc⇄MvcController.cs:line 164 at System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) in C:\ThirdParty⇄Src⇄SystemWebMvc⇄MvcControllerBase.cs:line 76 at System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext) in C:\DevThirdParty⇄Src⇄SystemWebMvc⇄ControllerBase.cs:line 87 at System.Web.Mvc.MvcHandler.ProcessRequest(HttpContextBase httpContext) in C:\DevThirdParty⇄SrcSystemWebMvc⇄MvcHandler.cs:line 80 at System.Web.Mvc.MvcHandler.ProcessRequest(HttpContext httpContext) in C:\DevThirdParty⇄SrcSystemWebMvc⇄MvcHandler.cs:line 68 at System.Web.Mvc.MvcHandler.System.Web.IHttpHandler.ProcessRequest(HttpContext httpContext) in C:\DevThirdParty⇄Src⇄SystemWebMvc⇄MvcHandler.cs:line 104 at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() at で、System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) にて実行。
以下は私のフィルタの例ですが、すべて同じように動作します。
public class UserIdFilter : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
const string Key = "userId";
if (filterContext.ActionParameters.ContainsKey(Key))
{
filterContext.ActionParameters[Key] = // get the user id from session or cookie
}
base.OnActionExecuting(filterContext);
}
}
ありがとうございます。 クリス
どのように解決するのですか?
私たちは答えを見つけました。私たちは Web ログを調べました。OPTIONS、PROPFIND、HEAD などの奇妙な http アクション (動詞/メソッド) を受信していたことがわかりました。
これは、これらの例外のいくつかの原因であると思われます。これで、断続的に発生していた理由がわかりました。
私たちは、curl.exe ツールでこの問題を再現しました。
curl.exe -X OPTIONS http://localhost/v2.3.1.0/(S(boztz1aquhzurevtjwllzr45))/Form/Fill/273
curl.exe -X PROPFIND http://localhost/v2.3.1.0/(S(boztz1aquhzurevtjwllzr45))/Form/Fill/273
curl.exe -X HEAD http://localhost/v2.3.1.0/(S(boztz1aquhzurevtjwllzr45))/Form/Fill/273
私たちが使った修正は、web.configにauthorizationセクションを追加することでした。
<authorization>
<deny users="*" verbs="OPTIONS, PROPFIND, HEAD"/>
</authorization>
関連
-
[解決済み】同じキーのアイテムがすでに追加されています。
-
[解決済み] GET リクエストを許可するには、JsonRequestBehavior を AllowGet に設定します。
-
[解決済み] データベースに 'AspNetRoles' という名前のオブジェクトがすでに存在します。
-
[解決済み] asp.net MVCの@RenderSectionとは?
-
[解決済み] MVC 3 - 辞書に渡されたモデル項目の型は 'System.Collections.Generic.List`1 です。
-
[解決済み] MVCで、文字列の結果を返すにはどうしたらいいですか?
-
[解決済み] ASP.NET MVCコントローラは、Imageを返すことができますか?
-
[解決済み】ASP.NET MVC 3 コントローラから200 HTTPステータスコードを返す方法
-
[解決済み】Html.ActionLinkを使用して別のコントローラのアクションを呼び出す
-
[解決済み] アクションリンクでエリア名を指定するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] DI向けNinjectとUnityの比較【終了しました
-
[解決済み] Automapper のタイプマップ構成がない、またはサポートされていないマッピング - エラー
-
[解決済み] 既存のデータベースの選択されたテーブルからDbContextをScaffoldすることができますか[重複]。
-
[解決済み】ASP.NET MVC 3 razor ViewStart ファイルで異なるレイアウトを指定するには?
-
[解決済み】ASP.NET MVC 3 RazorでAjax.BeginFormを使用する。
-
[解決済み】MVC4 DataType.Date EditorForがChromeで日付の値を表示しない、Internet Explorerでは問題なし。
-
[解決済み】ASP.NET MVC 3 Razor - EditorForにクラスを追加する。
-
[解決済み] MVCとRazorにおけるHtml.TextboxForとHtml.EditorForの相違点
-
[解決済み] 型名または名前空間名 'DbContext' が見つかりませんでした [閉鎖]。
-
[解決済み] ソートロジックは、モデル、ビュー、コントローラのいずれに配置するのがよいのでしょうか?[クローズド]