gpt4 book ai didi

c# - ASP.Net Web 服务不会返回 JSON - 始终是 XML

转载 作者:太空宇宙 更新时间:2023-11-03 11:25:34 25 4
gpt4 key购买 nike

我正在尝试创建一个简单的 AJAX 和 Web 服务测试(使用 C# .Net 2.0)以返回 JSON 格式的数据,并且我(我相信)拥有我需要的一切,但我不断遇到同样的问题再次。 Web 服务的响应始终是 XML。 (它总是以 <?xml version="1.0" encoding="utf-8"?> 作为第一行)。

我已经尝试了 ScriptMethod 标签中的各种选项,但没有任何区别。

调用正常,但我在响应中收到“parsererror”,这是我所期望的,因为它不是有效的 JSON。我可以在浏览器中调用 Web 服务方法并获得我期望的返回值,只是采用 XML 格式。 Fiddler 还显示请求和响应与我发现的一样。

这里已经有几个关于完全相同问题的问题,但没有一个给我一个有效的答案。

如果您需要更多信息,请提出问题。

C#

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.Services;
using System.Web.Script.Services;
using System.Web.Script.Serialization;

namespace jQueryWebServiceTest
{
/// <summary>
/// This is a simple web service to test calling from javascript using AJAX, and getting a response.
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[ScriptService]
public class Service1 : System.Web.Services.WebService
{
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string SayHello()
{
// I've tried both this...
var response = new { value = "Hello" };
JavaScriptSerializer json = new JavaScriptSerializer();
return json.Serialize(response);

// and this...
return "Hello";
}
}
}

Javascript

$(function () {

var data = JSON.stringify({ Name: "John" }); // This is not used - part of other testing.
data = "{}";

$.ajax({
type: "POST",
data: data,
url: "TestService.asmx/SayHello",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
console.log(data);
},
error: function (error, status) {
console.log("status = " + status);
console.log(error);
}
});

});

最佳答案

我设法通过将以下 2 个 block 添加到 web.config 来让它工作...

system.webconfiguration block 中...

<assemblies>
<add assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</assemblies>

以及其他任何地方,在 system.web 内......

<httpHandlers>
<remove verb="*" path="*.asmx"/>
<add verb="*" path="*.asmx" type="System.Web.Script.Services.ScriptHandlerFactory" validate="false"/>
</httpHandlers>

关于c# - ASP.Net Web 服务不会返回 JSON - 始终是 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9469189/

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