2010-05-01 128 views
8

我刚刚将我的网站的测试副本升级到asp.net 4.0,并注意到只有当我将该网站上载到我的服务器时才会出现一个奇怪的问题。asmx web服务在.net 4.0中返回xml而不是json

该网站有一个asmx web服务,返回json,但是当我在我的服务器上运行该网站时,它返回xml。它一直在asp.net 3.5中工作良好一年多。

将WebMethod装饰有正确的属性...

[WebMethod][ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
public List<LocationRecentChange> RecentChanges() 

和我的本地机器返回JSON。

尚未在服务器(Windows 2008 64位)上返回xml。

使用Firebug控制台,您将看到200 OK响应和一堆XML,并且在本地计算机上返回的数据是我期望的JSON。

下面是调用服务的JavaScript ..

function loadRecentData() { 
$.ajax({ 
    type: "POST", 
    url: "service/spots.asmx/RecentChanges", 
    data: "{}", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: loadRecentUpdates, 
    failure: function(msg) { 
     //alert(msg); 
    } 
}); 

}

任何建议表示欢迎,这让我难住了!

回答

7

您确定.NET 4安装在您的服务器上吗?

的ScriptHandlerFactory的 “类型” 的.NET 4串是:

System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 

ASP.NET 4现在包括在机器级其默认的web.config。所以,你不应该需要在你的项目的web.config,3.5或4中映射到ScriptHandlerFactory。

+0

原来服务器有一些与IIS一起发愁。我无法在本地重新创建问题,但将该项插入到web.config中可以解决问题。 – Baldy 2010-05-05 19:38:42

+3

我有完全相同的问题。你可以编辑答案,包括我需要添加到我的web.config中的确切代码(包括需要添加到哪个部分)?谢谢。 – njr101 2012-06-19 07:25:39

2

嗯,我设法追查阅读了关于Ajax的Web服务请求都在这里处理...

http://www.asp.net/%28S%28ywiyuluxr3qb2dfva1z5lgeg%29%29/learn/ajax/tutorial-05-cs.aspx

基本上是从asp.net 3.5需要一个处理程序,在您的网络中声明。在system.webserver下配置处理程序部分,以便它可以返回JSON响应而不是默认值。

这里是你需要添加到web.config handlers section什么(如果你需要支持IIS6也增加httpHandlers节)...

<handlers> 
    <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 

我有我的怀疑,这将需要更换同一处理程序的.net 4.0版本,但现在,它的工作原理。

+1

我有完全相同的问题。你能编辑答案以包含它需要添加到哪个部分吗?如果需要,还可以添加其他元素,例如。谢谢。 – njr101 2012-06-19 07:27:04

+0

已经为您更新并且已添加指向相关章节文档的链接 – Baldy 2012-06-19 10:51:34

+0

但是您还没有说过要添加部分的内容......该去哪里?我曾经说过,我得到一个错误。 – NickG 2013-04-11 14:51:20

相关问题