Jquery IIS将Web服务输出从JSON转换为XML
这是一个我们在其他地方讨论过的问题,有一些潜在的解决方案,但我们无法让它们中的任何一个发挥作用 我们设置了一个ASP.net Web服务,将结果作为JSON返回。我们使用JQuery$.post来获取结果(但这几乎肯定不是问题的一部分)。当结果到达客户端时,它们已被包装在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
<?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设置毫无关系。在其他一些论坛上肯定是在转移注意力你能提供更多关于你是如何解决这个问题的信息吗?我现在正处于同样的情况!