次のエラーがたくさん表示されます。これは、アクション メソッドへの HEAD リクエスト (おそらくボットからのもの) によるものだと思います。
A public action method 'index' was not found on controller 'MyWebsite.MyController'.
at System.Web.Mvc.Controller.HandleUnknownAction(String actionName)
at EPiServer.Web.Mvc.ActionControllerBase.HandleUnknownAction(String actionName)
at System.Web.Mvc.Controller.<BeginExecuteCore>b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState)
at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyn cResult asyncResult)
at System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult)
at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyn cResult asyncResult)
at System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__5(IAsyncResult asyncResult, ProcessRequestState innerState)
at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyn cResult asyncResult)
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.I ExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
私のアクション メソッドは、もともと GET リクエストを受け入れるように設定されていましたが、HEAD リクエストも受け入れるように変更しました。
[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Head)]
public async override Task<ActionResult> Index()
{
....
return View(new Model());
}
しかし、ページの HEAD リクエストをテストすると、レスポンスに同じエラーと 404 ステータス コードが表示されます。
これを引き起こしている可能性のあるアイデアはありますか?
コントローラーの継承を含めるように更新されました(簡単にするためにかなり削除されました):
マイコントローラー...
public class MyController: BasicContentPageController<MyPageType>
{
public MyController(IPageUrlProvider pageUrlProvider)
: base(pageUrlProvider)
{
}
[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Head)]
public async override Task<ActionResult> Index()
{
...
return View(new Model());
}
}
...BasicContentPageController から継承...
public abstract class BasicContentPageController<T> : MyBasePageContoller<T> where T : MyBasePageType
{
protected BasicContentPageController(IPageUrlProvider pageUrlProvider)
: base(pageUrlProvider)
{
}
[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Head)]
public virtual async Task<ActionResult> Index()
{
return View(await GetBasicPageViewModel());
}
}
...MyBasePageController から継承...
public abstract class MyBasePageContoller<T> : PageController<T>
where T : MyBasePageType
{
protected readonly IPageUrlProvider PageUrls;
protected MyBasePageContoller(IPageUrlProvider pageUrlProvider)
{
PageUrls = pageUrlProvider;
}
}