【问题标题】:Problem with JsonResult exceptionJsonResult 异常的问题
【发布时间】:2009-12-08 13:41:38
【问题描述】:

我有控制器操作,它返回 JsonResult 并由 jquery ajax get 请求使用。在我的开发机器上一切正常,但是在生产主机上复制时,我在最后一行控制器操作中遇到异常:

[AcceptVerbs(HttpVerbs.Get)]
public JsonResult Single(int UNIQUE_NO) {
  ...
  return Json(data, JsonRequestBehavior.AllowGet);  // < here exception is thrown
}

找不到方法:'System.Web.Mvc.JsonResult System.Web.Mvc.Controller.Json(System.Object, System.Web.Mvc.JsonRequestBehavior)'。

ELHAM 正在捕获异常。

平台:ASP.NET MVC 2 Beta

应用程序随附的 Dll(复制本地:true): Microsoft.Web.Mvc、MvcContrib、MvcContrib.FluentHtml、MvcContrib.TestHelper、Rhino.Mocks、System.Web.Mvc、System.Web.Routing

这里发生了什么?什么/我应该在哪里寻找这个? (如上所述,我的开发机器上没有出现此异常,其中 json 结果对象按预期生成并返回给调用者)

这里是调用堆栈(ELMAH):

System.MissingMethodException:找不到方法:'System.Web.Mvc.JsonResult System.Web.Mvc.Controller.Json(System.Object, System.Web.Mvc.JsonRequestBehavior)'。 在 NN_AccessToWeb_MVC2.Controllers.HomeController.Single(Int32 UNIQUE_NO) 在 lambda_method(ExecutionScope, ControllerBase, Object[]) 在 System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase 控制器,Object[] 参数) 在 System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext 控制器上下文,IDictionary2 parameters) at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary2 参数) 在 System.Web.Mvc.ControllerActionInvoker.c__DisplayClassa.b__7() 在 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter 过滤器,ActionExecutingContext preContext,Func1 continuation) at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClassa.<>c__DisplayClassc.<InvokeActionMethodWithFilters>b__9() at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList1 过滤器,ActionDescriptor actionDescriptor,IDictionary`2 参数) 在 System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName)

【问题讨论】:

  • 您找到解决方案了吗?这是一个非常有趣的例外......

标签: asp.net-mvc


【解决方案1】:

尝试返回一个新的JsonResult

return new JsonResult {
    JsonRequestBehavior = JsonRequestBehavior.AllowGet,
    Data = /* you model goes here */,
    ContentType = "application/json",
    ContentEncoding = Encoding.UTF8
};

【讨论】:

  • 不是 Json(data, JsonRequestBehavior.AllowGet) 已经是 JsonResult 了吗?
  • 是的。它是一个像 View() 这样的助手,是一个新的 ViewResult 的助手。也许您没有包含正确的命名空间?
  • 引发类似异常> System.MissingMethodException 找不到方法:'Void System.Web.Mvc.JsonResult.set_JsonRequestBehavior(System.Web.Mvc.JsonRequestBehavior)'。
  • 你包括哪些命名空间?
  • 我在原始帖子中添加了包含的命名空间。这显然是命名空间或类似的问题,因为我无法在开发机器上重新创建异常。
【解决方案2】:
return Json(data, "application/json", Encoding.UTF8, JsonRequestBehavior.AllowGet);

【讨论】:

  • return Json(YOURDATA), "application/json" ,Encoding.UTF8, JsonRequestBehavior.AllowGet);它的工作哇
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-06
  • 2011-05-13
  • 1970-01-01
  • 2015-02-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多