一尘不染

在.net 4.0中,asmx Web服务返回xml而不是json

json

我刚刚将我的网站的测试副本升级到asp.net 4.0,并且注意到了一个奇怪的问题,仅当我将网站上传到服务器时才会出现。

该站点有一个返回json的asmx Web服务,但是当我在服务器上运行该站点时,它会返回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);
    }
});

}

欢迎任何建议,这让我感到困惑!


阅读 249

收藏
2020-07-27

共1个答案

一尘不染

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

NET 4中ScriptHandlerFactory的“类型”字符串为:

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。

2020-07-27