gpt4 book ai didi

.net - ResponseFormat.Json 返回 xml

转载 作者:行者123 更新时间:2023-12-04 06:43:34 26 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





How to let an ASMX file output JSON

(6 个回答)


8年前关闭。




我知道我不是第一个遇到这个问题的人,但我似乎找不到可行的解决方案

当使用 webservice 集返回 json 时,.net 仍然将其包装在 XML 包装器中。

我搜索并尝试了很多东西

  • 我尝试按照某些帖子中的建议将各种 httphandler 设置添加到我的 web.config 中,但是这些都没有效果。我也认为没有必要,因为我正在开发一个全新的 win7/iis7.5/.net4 框。我读到,因为 .net 3.5 应该没有任何问题。但是还有!
  • 我尝试使用和不使用 responseformat.json 装饰。我的网络服务返回有效的 json(我可以在提取字符串后使用 parsejson 解析它)
  • 我尝试明确设置内容类型和数据类型。这会导致错误,提示响应无效 json。哪个是对的!

  • 正在发生的事情非常令人困惑,在 IE 中,至少在我的 devbox 中,响应作为 xml 文档返回,我可以在其中使用 msg.text 并轻松获取 json 字符串,但在生产中我在 FF 中进行了测试,它作为一个返回文档,没有“文本”属性。

    继承人我的 javascript/jquery
    $.ajax({
    error: function (xhr, ajaxOptions, thrownError) {
    alert(xhr.status+'-'+xhr.statusText);
    alert(thrownError);
    },
    url: '<%=ResolveUrl("~/WebService.asmx")%>' + "/JackJill",
    contentType: "application/json",
    success: function (msg) {
    alert(msg.d);
    }
    });

    所以:我怎么能简单地要求 .net 返回一个有效的常规 json 字符串,而不是包装它。我相信这将解决所有问题。它还将使全世界更容易访问我的服务,因此他们不必进行任何特殊解析。

    非常感谢您的任何建议或指示

    真挚地

    编辑:
    这是我刚刚测试的示例网络服务:
    <ScriptMethod(ResponseFormat:=ResponseFormat.Json)> <WebMethod()> Public Function JackJill() As String
    Return "[{""Name"":""Jack""},{""Name"":""Jill""}]"
    End Function

    然后当我把它放在浏览器中时

    http://localhost:81/webservice.asmx/JackJill

    我明白了
    <?xml version="1.0" encoding="utf-8" ?>
    <string xmlns="http://tempuri.org/">
    [{"Name":"Jack"},{"Name":"Jill"}]
    </string>

    为什么这里有所有这些 xml 的东西?

    最佳答案

    我意识到这个问题很旧,但以防万一其他人将来会看到这个答案......

    我发现(根据此 http://encosia.com/asmx-and-json-common-mistakes-and-misconceptions/ 和此 http://weblogs.asp.net/scottgu/archive/2007/04/04/json-hijacking-and-how-asp-net-ajax-1-0-mitigates-these-attacks.aspx ),如果您希望从 .ASMX 使用 JSON,则必须:

  • 将内容类型设置为“application/json”和
  • 将方法设置为“POST”

  • 上面的 Yisman 说他不想将他的服务限制为 POST 请求,但是(根据这两个引用)似乎确实如果您希望使用 .ASMX 并接收 JSON,那么您将不得不这样做。

    关于.net - ResponseFormat.Json 返回 xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5611134/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com