1

次のエラーがたくさん表示されます。これは、アクション メソッドへの 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;

    }

}
4

0 に答える 0