Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.Net MVC3为JsonResult返回零字节_Asp.net_Json_Asp.net Mvc 3_Kendo Ui_Iis Express - Fatal编程技术网

Asp.Net MVC3为JsonResult返回零字节

Asp.Net MVC3为JsonResult返回零字节,asp.net,json,asp.net-mvc-3,kendo-ui,iis-express,Asp.net,Json,Asp.net Mvc 3,Kendo Ui,Iis Express,我已经做了所有我认为应该做的调试,但找不到任何与正在发生的事情完全匹配的东西。这是代码,在所有的调试荣耀/愚蠢 [AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)] public ActionResult ConciergeRead([DataSourceRequest] DataSourceRequest request) { var concierges = GetConcierges(); var sorted = concierges

我已经做了所有我认为应该做的调试,但找不到任何与正在发生的事情完全匹配的东西。这是代码,在所有的调试荣耀/愚蠢

[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)]
public ActionResult ConciergeRead([DataSourceRequest] DataSourceRequest request)
{
    var concierges = GetConcierges();
    var sorted = concierges.ToDataSourceResult(request);
    var json = Json(concierges, "text/x-json");
    string jsonString = new JavaScriptSerializer().Serialize(json.Data);
    var json2 = Json(sorted, "text/x-json");
    return json;
}
ToDataSourceResult
位是Kendo UI的一部分,是MVC的Telerik扩展,但排除Kendo UI位并不能解决问题。无论从哪个浏览器调用,无论是Ajax请求还是浏览器中的直接get,我都无法获得返回非空响应的路由。同样的事情总是发生:没有反应体。有响应头,但正文中没有数据字节

这是在本地运行的,active directory登录集成工作正常(如果我不登录,我会在父路径
/mvc/123/concierges
上得到禁止,如果我直接点击Ajax路径)。服务器是通过visual studio 2012启动的IIS Express 8.0

响应标题

HTTP/1.1 200 OK
Cache-Control: private
Server: Microsoft-IIS/8.0
X-AspNetMvc-Version: 3.0
X-AspNet-Version: 4.0.30319
X-SourceFiles: =?UTF-8?B?QzpcTGVhZE1hc3RlclxMYXRlc3RccGxhdGZvcm1cTGVhZE1hc3RlclBsYXRmb3JtXEF3bC5MZWFkTWFzdGVyLk12Y1wxMjNcY29uY2llcmdlc1xDb25jaWVyZ2VSZWFk?=
Persistent-Auth: true
X-Powered-By: ASP.NET
Date: Fri, 21 Dec 2012 17:19:38 GMT
Content-Length: 0
从直接浏览器获取的请求标题(这是chrome,但FF是相同的,具有不同的cookie和用户代理)

来自由剑道UI发起的Ajax请求的请求头(这是FF,但以此类推)

我采取的步骤

  • 调试到代码中,验证路由是否正确命中
  • 验证了
    GetConcierges()
    返回数据,序列化为json,序列化为字符串,整个过程看起来都是正确的
  • 铬、FF和IE9
  • 不同的接受动词
  • 返回类型为JsonResult而不是ActionResult

即使您没有解决方案,也非常感谢您执行额外的调试步骤。

您需要首先允许JSON结果:

var json2 = Json(sorted, "text/x-json");
作为


禁用此选项是为了防止JSON劫持,因此在发送敏感信息时不要使用此选项(然后在响应正文中返回敏感数据)

您需要首先允许JSON结果:

var json2 = Json(sorted, "text/x-json");
作为


它被禁用是为了防止JSON劫持,因此在发送敏感信息时不要使用此选项(然后在响应的正文中返回敏感数据)

JsonResult在哪里?您使用的是ActionResult??JsonResult是从ActionResult派生的,因此这应该可以正常工作。此外,在概述的调试步骤中,据说他尝试将返回类型切换为JsonResult,但没有改变行为。JsonResult是ActionResult。实际上,他使用Json方法JsonResult继承自ActionResult。我在问题中说,我已经尝试使用这两种方法。在网上有很多关于两者都起作用的例子,但对我来说都不起作用。JsonResult在哪里?您使用的是ActionResult??JsonResult是从ActionResult派生的,因此这应该可以正常工作。此外,在概述的调试步骤中,据说他尝试将返回类型切换为JsonResult,但没有改变行为。JsonResult是ActionResult。实际上,他使用Json方法JsonResult继承自ActionResult。我在问题中说,我已经尝试使用这两种方法。在网络上有很多这样的例子,它们都起作用,但对我来说都不起作用。我以前遇到过这种情况,认为你可能是对的,但是,我记得在这种情况下,非常好的错误报告告诉了你确切的解决方法。是的,就是这样。我的疏忽令人尴尬,但我认为AcceptVerb足以克服任何允许/拒绝行为。现在我在寻找
JsonRequestBehavior
,已经有人在报道这一点了。我完全看不到这背后的任何迹象。mklinker,关于我应该在哪里查找的任何提示?我以前遇到过这个问题,并且认为您可能是对的,但是,我记得在那个场景中非常好的错误报告告诉了您确切的解决方法。是的,就是这样。我的疏忽令人尴尬,但我认为AcceptVerb足以克服任何允许/拒绝行为。现在我在寻找
JsonRequestBehavior
,已经有人在报道这一点了。我完全看不到这背后的任何迹象。mklinker,关于我应该去哪里找有什么建议吗?
var json2 = Json(sorted, "text/x-json");
return Json(json2, JsonRequestBehavior.AllowGet);