繁体   English   中英

IIS6(而非IIS7)在getJSON响应中是否为JSON空值? 使用MVC2,jQuery,Ajax

[英]Null JSON in getJSON response from IIS6, not IIS7? Using MVC2, jQuery, Ajax

新来的。 我已经搜索了很多解决我的问题的可行解决方案,但是即使我发现带有有希望的标题的帖子,也没有一种解决方案有效。

我正在将MVC2 Web应用程序部署到客户端的服务器。

我在Win2k8服务器上进行了开发,但是它们正在运行Win2k3服务器。

该应用程序的唯一用途是接收一些记录ID信息作为HTTP参数,在数据库中检查给定一条或多条记录的状态,然后以简单字符串的形式返回状态信息,例如JSON中的“ Completed”或“ Incomplete”格式。

此getJSON代码在开发环境中可以正常工作。

对我来说,莫名其妙的是,在客户端的服务器上,getJSON请求从应用程序接收到空响应。

没有跨域操作AFAIK ...从客户端服务器或通过VPN从我的计算机获得的结果是相同的。

在MVC模型的Json代码中,一种常见的解决方案是将“ JsonRequestBehavior.AllowGet”属性添加到返回的Json结果中。 我在尝试部署它之前就做了很长时间,并且正如我所说,它在开发环境中运行良好。

使用Firebug,我看到了相同的请求URL发送到本地服务器和客户端服务器-来自两个服务器的响应标头相同,但是来自服务器的响应内容显示为:

{"Result":"No Data"}

这就是我想要的。

客户端服务器的响应中实际上没有显示任何内容。 但是该请求获得HTTP 200代码,并记录为响应的status属性中的成功消息。

在两种情况下,响应头的内容类型均为“ application / json”

但是,等等,还有更多!

如果我在Firefox导航栏中手动向每个服务器输入请求,然后按Enter,则在两种情况下,它都会响应:

{"Result":"No Data"}

这就是我想要的。 那么,为什么当我在Firefox中手动输入请求URL而不从Javascript代码时才能从客户端服务器上的MVC应用程序获得所需的结果?

我尝试使用jQuery ajaxSetup方法强制使用不同的输出内容类型...

$.ajaxSetup({
    async: false,
    dataType: 'text'
    }); 

要么

$.ajaxSetup({
    async: false,
    dataType: 'html'
    }); 

并再次使用“脚本”和“ json”。 我也尝试了转换选项,例如'text json'或'html json'或'json text'等。

我正在阅读的一些帖子以及我的直觉表明,问题不在于发出错误请求的jQuery代码...我看不到相同的jQuery请求如何指向运行中的另一台服务器同一应用会突然导致该服务器发送回“ null”值。

空,我想清楚...我的意思是什么也没发送。 没有{}或{null}或任何JSON符号...只是空白不存在:P

即使没有人知道答案,我还是希望得到一些建议,也许暗示着我应该把重点放在……客户端还是服务器上?

如果问题出在服务器上,似乎很难真正知道MVC的东西在IIS6服务器上正在100%运行,但是总的来说它似乎可以工作。 我在客户端服务器上运行了另一个MVC应用程序,该应用程序响应虚拟路径,并且通常与开发机上的运行方式相同。

我发现了一件事...请求标头有些不同? 发送到IIS7安装程序的请求标头包括“ X-Requested-With:XMLHttpRequest”,“ referrer”和“ cookie”字段/值。

我可以猜测到IIS6请求标头中缺少“ X-requested-with:XMLHttpRequest”是一个线索,但是我看不到指向不同服务器的相同javascript代码本身如何生成不同的请求标头。 那么这些又是怎么产生的呢?

javascript嵌入在ASP.NET页面btw中。

哦..无奈!

感谢您的任何投入。


奇怪的进度...显然,IIS6处理查询存在某种问题。 尽管我没有对JSONP进行任何关注,但其他地方的帖子却建议有时使用“&callback =?”。 .getJSON请求URL末尾的参数会强制其进入GET模式,该模式经常用于从服务器获取数据的问题。 所以我做到了...它确实起作用了。 响应请求,返回了正确的{“ Result”:“ No Data”}。 但是,通过JSONP回调的工作方式,它会生成自己的脚本来对传入的JSON进行调用,获取和解释。 在这种情况下,它会解释JSON需要它没有的标签,因此会引发“无效标签”错误...必须有某种方法可以破解内容以仅提供JSON,但需要使用JSON进行全部操作JSONP回调表明服务器配置错误,对吗? 还是为什么它在没有JSONP的IIS7而不是IIS6的情况下不能工作?


尽管我不喜欢回调JSONP解决方案,但它似乎可以正常工作。 仍然返回有关无效标签的错误,但该错误似乎并未阻止剩余的javascript运行...,因此该应用程序现在正在使用IIS6。 我尚未测试针对IIS7使用回调和JSONP的修复程序,但我希望它能很好地工作。


这是通往我当前解决方案的讨论的链接。 但是,我仍然希望找到一个更优雅的解决方案。

NeoWin.net

您确定您的应用程序扩展名映射设置正确吗?

请遵循本文以在IIS6上运行MVC2,并确保已完成所有不同的配置,这可能是进一步研究具体细节之前的第一步。

我真的倾向于相信它与HTTP动词有关。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM