jquery - 使用 JSON 调用 asmx Web 服务器时出现内部服务器错误

标签 jquery asp.net json web-services circular-reference

我创建了一个简单的 Web 服务并将其发布到我的主机。 当我直接通过网络浏览器调用它时,它正在工作。

http://test.xxxx.com/service1.asmx/HelloWorld

然后我尝试使用 JSON 响应格式从 aspx 网页调用它,但收到内部服务器错误。

我的服务:

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]

[System.Web.Script.Services.ScriptService]
public class Service1 : System.Web.Services.WebService
{
    [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public  DataSet HelloWorld()
    {
        DataSet ds = new DataSet();
        //da.Fill(ds);
        ds.Tables.Add("Table0");
        ds.Tables[0].Columns.Add("Test");
        for (int i = 0; i < 20; i++)
        {
            ds.Tables[0].Rows.Add("Test " + i);
        }

        return ds;

    }
}

我使用以下方法从 aspx 页面调用它。

<script type="text/javascript">
    function CallService() {
        $("#lblResult").addClass("loading");
        $.ajax({
            type: "POST",
            url: "http://test.xxx.com/service1.asmx/HelloWorld",
            data: "{Lang:'tr'}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: Success,
            error: Error
        });
    }

    function Success(data, status) {
        $("#lblResult").removeClass("loading");
        $("#lblResult").html(data.d);
        alert(data.d);
    }

    function Error(request, status, error) {
        $("#lblResult").removeClass("loading");
        $("#lblResult").html(request.statusText);
        alert(error);
    }

我研究了与此错误相关的许多主题,但找不到解决方案。

谢谢

编辑:

{"Message":"A circular reference was detected while serializing an object of type \u0027System.Globalization.CultureInfo\u0027.","StackTrace":"   at System.Web.Script.Serialization.JavaScriptSerializer.SerializeValueInternal(Object o, StringBuilder sb, Int32 depth, Hashtable objectsInUse, SerializationFormat serializationFormat)\r\n   at System.Web.Script.Serialization.JavaScriptSerializer.SerializeValue(Object o, StringBuilder sb, Int32 depth, Hashtable objectsInUse, SerializationFormat serializationFormat)\r\n   at System.Web.Script.Serialization.JavaScriptSerializer.SerializeCustomObject(Object o, StringBuilder sb, Int32 depth, Hashtable objectsInUse, SerializationFormat serializationFormat)\r\n   at System.Web.Script.Serialization.JavaScriptSerializer.SerializeValueInternal(Object o, StringBuilder sb, Int32 depth, Hashtable objectsInUse, SerializationFormat serializationFormat)\r\n   at System.Web.Script.Serialization.JavaScriptSerializer.SerializeValue(Object o, StringBuilder sb, Int32 depth, Hashtable objectsInUse, SerializationFormat serializationFormat)\r\n   at System.Web.Script.Serialization.JavaScriptSerializer.SerializeCustomObject(Object o, StringBuilder sb, Int32 depth, Hashtable objectsInUse, SerializationFormat serializationFormat)\r\n   at System.Web.Script.Serialization.JavaScriptSerializer.SerializeValueInternal(Object o, StringBuilder sb, Int32 depth, Hashtable objectsInUse, SerializationFormat serializationFormat)\r\n   at System.Web.Script.Serialization.JavaScriptSerializer.SerializeValue(Object o, StringBuilder sb, Int32 depth, Hashtable objectsInUse, SerializationFormat serializationFormat)\r\n   at System.Web.Script.Serialization.JavaScriptSerializer.SerializeCustomObject(Object o, StringBuilder sb, Int32 depth, Hashtable objectsInUse, SerializationFormat serializationFormat)\r\n   at System.Web.Script.Serialization.JavaScriptSerializer.SerializeValueInternal(Object o, StringBuilder sb, Int32 depth, Hashtable objectsInUse, SerializationFormat serializationFormat)\r\n   at System.Web.Script.Serialization.JavaScriptSerializer.SerializeValue(Object o, StringBuilder sb, Int32 depth, Hashtable objectsInUse, SerializationFormat serializationFormat)\r\n   at System.Web.Script.Serialization.JavaScriptSerializer.SerializeCustomObject(Object o, StringBuilder sb, Int32 depth, Hashtable objectsInUse, SerializationFormat serializationFormat)\r\n   at System.Web.Script.Serialization.JavaScriptSerializer.SerializeValueInternal(Object o, StringBuilder sb, Int32 depth, Hashtable objectsInUse, SerializationFormat serializationFormat)\r\n   at System.Web.Script.Serialization.JavaScriptSerializer.SerializeValue(Object o, StringBuilder sb, Int32 depth, Hashtable objectsInUse, SerializationFormat serializationFormat)\r\n   at System.Web.Script.Serialization.JavaScriptSerializer.Serialize(Object obj, StringBuilder output, SerializationFormat serializationFormat)\r\n   at System.Web.Script.Serialization.JavaScriptSerializer.Serialize(Object obj, SerializationFormat serializationFormat)\r\n   at System.Web.Script.Services.RestHandler.InvokeMethod(HttpContext context, WebServiceMethodData methodData, IDictionary`2 rawParams)\r\n   at System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)","ExceptionType":"System.InvalidOperationException"}

最佳答案

我已将响应格式从 JSON 更改为 XML,现在似乎已解决。 我不知道为什么 json 会导致这个错误。

//[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
  [System.Web.Script.Services.ScriptMethod(ResponseFormat = System.Web.Script.Services.ResponseFormat.Xml)]

关于jquery - 使用 JSON 调用 asmx Web 服务器时出现内部服务器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21215520/

相关文章:

javascript - 跨浏览器 - 文本区域中的换行符

json - 如何使用 javascript 将 json 数据写入 google 工作表

javascript - JS下拉菜单被隐藏?或者不工作?

c# - 单选按钮上的模型绑定(bind)为该属性返回 null (ASP.NET Core)

javascript - 阻止页面回发的“未指定错误”

asp.net - 是否有宏/扩展将 Visual Studio 中的所有 Web 项目设置为 "Don' t 打开页面”?

javascript - Python API,由 JavaScript 使用,发送 JSON 数据

json - 如何更新 dynamoDB 中 map 数据类型的项目

javascript - 如果未选择数量,则阻止选择选项;如果数量发生变化,则自动更新价格

javascript - 如何比较javascript/jquery中的不同数组并取回数组中不同的列