奇怪的asp.net mvc错误

时间:2011-03-03 10:44:54

标签: asp.net-mvc

使用asp.net Mvc3 RTM,IIS7。

我遇到了像这样的错误:

  

System.Web.HttpException   在控制器'Interreg.Web.Controllers.ApplicationsController'上找不到公共操作方法'Application'   System.Web.HttpException(0x80004005):在控制器'Interreg.Web.Controllers.ApplicationsController'上找不到公共操作方法'Application'。
     在System.Web.Mvc.Controller.HandleUnknownAction(String actionName)
     在System.Web.Mvc.Controller.ExecuteCore()
     在System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext)
     在System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext)
     在System.Web.Mvc.MvcHandler。<> c_ DisplayClass6。<> c _DisplayClassb.b_ 5()
     在System.Web.Mvc.Async.AsyncResultWrapper。<> c
_DisplayClass1.b_ 0()
     在System.Web.Mvc.Async.AsyncResultWrapper>   c
_DisplayClass8'1.BeginSynchronous> b__7(IAsyncResult
     在System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.End()
     在System.Web.Mvc.MvcHandler。<> c
_DisplayClasse.b_ d()
     在System.Web.Mvc.SecurityUtil.b
_0(行动f)
     在System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(Action action)
     在System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult)
     在System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result)
     在System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
     在System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean& completedSynchronously)

控制器和操作发生变化,它们确实存在且应用程序不会崩溃 - 用户看不到死亡的黄色屏幕。

我怀疑它与静态资源加载(图像,脚本)有关,可能是路由。

任何想法有什么不对,是什么导致这个?

2 个答案:

答案 0 :(得分:0)

这可能就是你说的。我建议检查IIS日志以查询针对/ Application的查询,以查看该URL的位置以及它的调用位置。

另一个选项是在调试模式下导航,在这种情况下,异常应该在Visual Studio中暂停执行。

祝你好运!

答案 1 :(得分:0)

  1. 验证请求的类型。(GET或POST)
  2. 在方法
  3. 上方添加[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)]个属性
  4. 如果Application方法返回Json结果,则返回Json返回JsonRequestBehavior.AllowGet行为。 例如:return Json(zeroResult, JsonRequestBehavior.AllowGet);