Jquery IIS将Web服务输出从JSON转换为XML

Jquery IIS将Web服务输出从JSON转换为XML,jquery,asp.net,web-services,iis-7,asp.net-4.0,Jquery,Asp.net,Web Services,Iis 7,Asp.net 4.0,这是一个我们在其他地方讨论过的问题,有一些潜在的解决方案,但我们无法让它们中的任何一个发挥作用 我们设置了一个ASP.net Web服务,将结果作为JSON返回。我们使用JQuery$.post来获取结果(但这几乎肯定不是问题的一部分)。当结果到达客户端时,它们已被包装在XML标记中。因此,与其像这样返回: <?xml version="1.0" encoding="utf-8"?> {data} <System.Web.Script.Services.ScriptServi

这是一个我们在其他地方讨论过的问题,有一些潜在的解决方案,但我们无法让它们中的任何一个发挥作用

我们设置了一个ASP.net Web服务,将结果作为JSON返回。我们使用JQuery$.post来获取结果(但这几乎肯定不是问题的一部分)。当结果到达客户端时,它们已被包装在XML标记中。因此,与其像这样返回:

<?xml version="1.0" encoding="utf-8"?>
{data}
<System.Web.Script.Services.ScriptService(Namespace:="[SomeURL.com]")> _
<System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<ToolboxItem(False)> _
Public Class RequestM
Inherits System.Web.Services.WebService

<WebMethod()> _
<ScriptMethod(ResponseFormat:=ResponseFormat.Json, UseHttpGet:=False, XMLSerializeString:=False)> _
Public Function dataRequestJSON(ByVal JsonRequestObject As String) As String

    Try

        Dim MyNewDataRequest As New DataRequest(JsonRequestObject)
        Dim MyJsonResponse = MyNewDataRequest.JsonResponse
        Return MyJsonResponse

    Catch ex As Exception
        Return ex.Message
    End Try

End Function

{data}
…他们就这样回来了

<?xml version="1.0" encoding="utf-8"?>
<string xmlns="[SomeURL.com]">{data}</string>

{data}
在测试过程中,我们发现ASP.NET3.5中webservice结果的默认值是JSON,但在ASP.NET4.0中,它被更改为XML

为了尝试和测试这一点,我们下载了一个ASP.NET3.5测试webservice应用程序,并按预期在本地以JSON格式输出。然后,我们将应用程序升级到4.0,希望它开始以XML的形式输出。但是,在本地,它继续以JSON的形式输出,没有外部标记

然后,我们将这个测试应用程序移动到IIS7.0服务器上,它立即开始以XML格式输出。这意味着问题与IIS内的设置与本地设置有关

然后我们找到了这篇文章:

…并尝试通过web.config将4.0脚本处理程序替换为3.5版本。然而,这也不起作用。修改web.config后,IIS的处理程序映射区域中会出现以下内容:

ScriptHandlerFactory-3.5版本。
ScriptHandlerFactoryAppServices-Integrated-4.0-4.0版本

……但也

WebServiceHandlerFactory集成版-2.0版本
WebServiceHandlerFactory-Integrated-4.0-4.0版本
WebServiceHandlerFactory-ISAPI-2.0
WebServiceHandlerFactory-ISAPI-2.0-64
WebServiceHandlerFactory-ISAPI-4.0_32位
WebServiceHandlerFactory-ISAPI-4.0_64位

所以。。。这就是我们所处的位置——为了尝试让Web服务以JSON的形式发送,我们正在混乱IIS设置。我们非常确定这是一个IIS设置,或者至少是一个ASP.net 4.0 vs 3.5设置

作为背景,ASP.net Web服务如下所示:

<?xml version="1.0" encoding="utf-8"?>
{data}
<System.Web.Script.Services.ScriptService(Namespace:="[SomeURL.com]")> _
<System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<ToolboxItem(False)> _
Public Class RequestM
Inherits System.Web.Services.WebService

<WebMethod()> _
<ScriptMethod(ResponseFormat:=ResponseFormat.Json, UseHttpGet:=False, XMLSerializeString:=False)> _
Public Function dataRequestJSON(ByVal JsonRequestObject As String) As String

    Try

        Dim MyNewDataRequest As New DataRequest(JsonRequestObject)
        Dim MyJsonResponse = MyNewDataRequest.JsonResponse
        Return MyJsonResponse

    Catch ex As Exception
        Return ex.Message
    End Try

End Function
_
_
_
公共类请求
继承System.Web.Services.WebService
_
_
公共函数dataRequestJSON(ByVal JsonRequestObject作为字符串)作为字符串
尝试
将MyNewDataRequest设置为新数据请求(JsonRequestObject)
Dim MyJsonResponse=MyNewDataRequest.JsonResponse
返回MyJsonResponse
特例
回信
结束尝试
端函数
请帮忙


谢谢

您可能需要将ASP.NET 3.5 Web服务指向经典的ASP.NET 2.0应用程序池,您可以在Web服务的“高级设置”中执行此操作。

问题在于json请求的格式,虽然它是有效的json,但ASP.NET webserive仍返回xml。结果证明,这与iis设置毫无关系。在其他一些论坛上肯定是在转移注意力

你能提供更多关于你是如何解决这个问题的信息吗?我现在正处于同样的情况!