title: A public action method was not found on controller - HEAD requests
body: <p>I'm seeing lots of the following error, which I think is down to HEAD requests to an action method (from bots perhaps):</p>
  
  <pre><code>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.&lt;BeginExecuteCore&gt;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.&lt;BeginProcessRequest&gt;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&amp;     completedSynchronously)
  </code></pre>
  
  <p>My action method was originally only set up to accept GET requests, but I have now changed it to accept HEAD requests too e.g.:</p>
  
  <pre><code>    [AcceptVerbs(HttpVerbs.Get | HttpVerbs.Head)]
      public async override Task&lt;ActionResult&gt; Index()
      {
        ....
        return View(new Model());
      }
  </code></pre>
  
  <p>However, when I test a HEAD request for the page, I'm seeing the same error in the response and a 404 status code.</p>
  
  <p>Anbody have any ideas what could be causing this please? </p>
  
  <p><strong>UPDATED</strong> to include Controller inheritance (removed quite a bit for simplicity):</p>
  
  <p>MyController...</p>
  
  <pre><code> public class MyController: BasicContentPageController&lt;MyPageType&gt;
  {
  
  
      public MyController(IPageUrlProvider pageUrlProvider)
          : base(pageUrlProvider)
      {
  
      }
  
  [AcceptVerbs(HttpVerbs.Get | HttpVerbs.Head)]
      public async override Task&lt;ActionResult&gt; Index()
      {
      ...
      return View(new Model());
      }
  
  }
  </code></pre>
  
  <p>...inherits from BasicContentPageController...</p>
  
  <pre><code> public abstract class BasicContentPageController&lt;T&gt; : MyBasePageContoller&lt;T&gt; where T : MyBasePageType
      {
  
   protected BasicContentPageController(IPageUrlProvider pageUrlProvider)
          : base(pageUrlProvider)
      {
  
      }
  
   [AcceptVerbs(HttpVerbs.Get | HttpVerbs.Head)]
      public virtual async Task&lt;ActionResult&gt; Index()
      {
          return View(await GetBasicPageViewModel());
      }
  
  }
  </code></pre>
  
  <p>...inherits from MyBasePageController...</p>
  
  <pre><code> public abstract class MyBasePageContoller&lt;T&gt; : PageController&lt;T&gt;
      where T : MyBasePageType
  {
  protected readonly IPageUrlProvider PageUrls;
  
   protected MyBasePageContoller(IPageUrlProvider pageUrlProvider)
      {
          PageUrls = pageUrlProvider;
  
      }
  
  }
  </code></pre>