0

我有我的行动可用。多人在此应用程序上工作,并且有可能同时单击按钮。有时我会遇到以下异常,我该如何解决?

例外

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.<>c__DisplayClass19.<BeginExecuteCore>b__15()
   at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass1.<MakeVoidDelegate>b__0()
   at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass8`1.<BeginSynchronous>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.<>c__DisplayClass4.<MakeVoidDelegate>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.<>c__DisplayClass6.<>c__DisplayClassb.<BeginProcessRequest>b__4(IAsyncResult asyncResult)
   at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar)
   at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.End()
   at System.Web.Mvc.MvcHandler.<>c__DisplayClasse.<EndProcessRequest>b__d()
   at System.Web.Mvc.SecurityUtil.<GetCallInAppTrustThunk>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& completedSynchronously)

行动:

[HttpPost]
        [NoCaching]
        public ActionResult CorrectAsIsControl()


[HttpPost]
        [NoCaching]
        public ActionResult UnreadableControl()

无缓存过滤器

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
    }

阿贾克斯邮报

_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 + "<br><br>Picking new item...", $click, false, false);
                        setTimeout('PaperSurveyBadEmailCleanUp._pickNewItem()', 3000);
                    }
                }
            });
        }
    }
4

2 回答 2

1

Phil Haack 有一篇很棒的文章,他在其中描述了一个工具“Route Debugger”的使用,这在像你这样的场景中很有用这里是链接http://haacked.com/archive/2012/07/25/finding-bad -controllers.aspx

于 2012-07-31T03:39:22.207 回答
0

我已经在 ajax 发布操作上删除了 NoCaching 属性,它似乎有效。自昨天以来,我没有收到任何错误。现在我需要重新考虑 NoCaching 属性。

于 2012-08-01T20:41:40.157 回答