【问题标题】:IIS converting Webservice output from JSON to XMLIIS 将 Web 服务输出从 JSON 转换为 XML
【发布时间】:2012-02-08 14:40:04
【问题描述】:

这是我们在其他地方看到的一个问题,有几个潜在的解决方案,但我们无法让其中任何一个发挥作用。

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

<?xml version="1.0" encoding="utf-8"?>
{data}

...他们像这样返回...

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

在测试过程中,我们发现在 ASP.net 3.5 中 Web 服务结果的默认值是 JSON,但在 ASP.net 4.0 中,这已更改为 XML。

为了尝试对此进行测试,我们下载了一个 ASP.net 3.5 测试网络服务应用程序,并按预期以 JSON 格式在本地输出。然后我们将应用程序升级到 4.0,期望它开始输出为 XML。但是,在本地,它继续输出为没有外部标签的 JSON。

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

然后我们发现了这个帖子:

asmx web service returning xml instead of json in .net 4.0

...并尝试通过 web.config 将 4.0 脚本处理程序替换为 3.5 版本。但是,这也不起作用。在我们的 web.config 修改后,我们在 IIS 的 Handler Mappings 区域中有以下内容:

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

...但也...

WebServiceHandlerFactory-Integrated - 2.0 版本
WebServiceHandlerFactory-Integrated-4.0 - 4.0 版本
WebServiceHandlerFactory-ISAPI-2.0
WebServiceHandlerFactory-ISAPI-2.0-64
WebServiceHandlerFactory-ISAPI-4.0_32bit
WebServiceHandlerFactory-ISAPI-4.0_64bit

所以...这就是我们所处的位置 - 弄乱 IIS 设置以尝试让 Web 服务以 JSON 格式发送。我们很确定这是一个 IIS 设置,或者至少是一个 ASP.net 4.0 vs 3.5 设置。

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

<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

请帮忙!

谢谢!

【问题讨论】:

    标签: jquery asp.net web-services iis-7 asp.net-4.0


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      问题在于 json 请求的格式,虽然它是有效的 json,但 asp.net 网络服务仍在返回 xml。原来与iis设置无关。一定是其他论坛上的红鲱鱼

      【讨论】:

      • 你能提供更多关于你是如何解决这个问题的信息吗?我现在的情况完全一样!
      猜你喜欢
      • 2012-03-31
      • 2014-03-22
      • 2023-03-17
      • 2018-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-14
      • 1970-01-01
      相关资源
      最近更新 更多