我刚刚将我的网站的测试副本升级到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); } });
}
欢迎任何建议,这让我感到困惑!
您确定服务器上已安装.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。