title: Controller/Action not found
body: <p>I have my action available. Multiple people work on this application and there is a chance that the buttons are clicked at the same time. Occasionally i get the following exception, how can i fix this? </p>
  
  <p><strong>Exception</strong></p>
  
  <pre><code>System.Web.HttpException: A public action method 'CorrectAsIsControl' was not found on controller 'Intranet.Site.Areas.OngoingProjects.Controllers.PaperSurveyEmailCleanUpController'.
  Generated: Mon, 30 Jul 2012 21:38:49 GMT
  
  System.Web.HttpException (0x80004005): A public action method 'CorrectAsIsControl' was not found on controller 'Intranet.Site.Areas.OngoingProjects.Controllers.PaperSurveyEmailCleanUpController'.
     at System.Web.Mvc.Controller.HandleUnknownAction(String actionName)
     at System.Web.Mvc.AsyncController.&lt;&gt;c__DisplayClass19.&lt;BeginExecuteCore&gt;b__15()
     at System.Web.Mvc.Async.AsyncResultWrapper.&lt;&gt;c__DisplayClass1.&lt;MakeVoidDelegate&gt;b__0()
     at System.Web.Mvc.Async.AsyncResultWrapper.&lt;&gt;c__DisplayClass8`1.&lt;BeginSynchronous&gt;b__7(IAsyncResult _)
     at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.End()
     at System.Web.Mvc.AsyncController.EndExecuteCore(IAsyncResult asyncResult)
     at System.Web.Mvc.Async.AsyncResultWrapper.&lt;&gt;c__DisplayClass4.&lt;MakeVoidDelegate&gt;b__3(IAsyncResult ar)
     at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.End()
     at System.Web.Mvc.AsyncController.EndExecute(IAsyncResult asyncResult)
     at System.Web.Mvc.AsyncController.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult)
     at System.Web.Mvc.MvcHandler.&lt;&gt;c__DisplayClass6.&lt;&gt;c__DisplayClassb.&lt;BeginProcessRequest&gt;b__4(IAsyncResult asyncResult)
     at System.Web.Mvc.Async.AsyncResultWrapper.&lt;&gt;c__DisplayClass4.&lt;MakeVoidDelegate&gt;b__3(IAsyncResult ar)
     at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.End()
     at System.Web.Mvc.MvcHandler.&lt;&gt;c__DisplayClasse.&lt;EndProcessRequest&gt;b__d()
     at System.Web.Mvc.SecurityUtil.&lt;GetCallInAppTrustThunk&gt;b__0(Action f)
     at System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(Action action)
     at System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult)
     at System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result)
     at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
     at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean&amp; completedSynchronously)
  </code></pre>
  
  <p><strong>Action:</strong></p>
  
  <pre><code>[HttpPost]
          [NoCaching]
          public ActionResult CorrectAsIsControl()
  
  
  [HttpPost]
          [NoCaching]
          public ActionResult UnreadableControl()
  </code></pre>
  
  <p><strong>NoCaching Filter</strong></p>
  
  <pre><code>public partial class NoCaching : ActionFilterAttribute
      {
          #region OVERRIDES
  
  
          public override void OnResultExecuting(ResultExecutingContext filterContext)
          {
              filterContext.HttpContext.Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1));
              filterContext.HttpContext.Response.Cache.SetValidUntilExpires(false);
              filterContext.HttpContext.Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
              filterContext.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);
              filterContext.HttpContext.Response.Cache.SetNoStore();
  
              base.OnResultExecuting(filterContext);
          }
  
  
          #endregion
      }
  </code></pre>
  
  <p><strong>Ajax Post</strong></p>
  
  <pre><code>_performStaticActions: function ($click) {
          var id = $click.attr("rel");
          var link = $click.attr("href");
          if (id == "")
              jMessageError("Unable to find Id, operation aborted!", $click, false, true);
          else if (link == "")
              jMessageError("Unable to find action link, operation aborted!", $click, false, true);
          else {
              jMessage("Processing request...", $click, true, false);
  
              //link = link + "?badEmailId=" + id;
              $.ajax({
                  cache: false,
                  url: link,
                  type: Ajax.MethodType.POST,
                  data: { badEmailId: id},
                  error: function (xhr, ajaxOptions, thrownError) {
                      jMessageError(xhr.responseText, $click, false, true);
                  },
                  success: function (result) {
                      if (result.IsError) {
                          jMessageError(result.Message, $click, false, true);
                      } else {
                          jMessageOK(result.Message + "&lt;br&gt;&lt;br&gt;Picking new item...", $click, false, false);
                          setTimeout('PaperSurveyBadEmailCleanUp._pickNewItem()', 3000);
                      }
                  }
              });
          }
      }
  </code></pre>