C# ASP.Net WebForms Ajax序列化类型为';System.Reflection.Module';

C# ASP.Net WebForms Ajax序列化类型为';System.Reflection.Module';,c#,jquery,asp.net,ajax,webforms,C#,Jquery,Asp.net,Ajax,Webforms,我正在使用一个ASP.NETWebForms项目,并且正在使用JQuery发布数据,并在输入数据之后从数据库中返回true或false结果 我必须强调,这可以在本地和测试服务器上工作,但不能在生产环境中工作 我需要在测试和本地更改的web配置文件的每个区域在生产中也是相同的 这是JQuery $("#bttnSave").click(function () { $("#successAlert").hide(); $("#errorAlert").hide(); $(

我正在使用一个ASP.NETWebForms项目,并且正在使用JQuery发布数据,并在输入数据之后从数据库中返回true或false结果

我必须强调,这可以在本地和测试服务器上工作,但不能在生产环境中工作

我需要在测试和本地更改的web配置文件的每个区域在生产中也是相同的

这是JQuery

$("#bttnSave").click(function () {

    $("#successAlert").hide();
    $("#errorAlert").hide();

    $(this).hide();
    var div = "#action";
    $(div).hide();
    $("#saving").show();

    var singleV = 0.00;
    var annualVal = 0.00;
    var quarterlyVal = 0.00;
    var cover = $('#ddlCoverTypes :selected').val();


    if ($("#txtSinglePaymentValue").val() !== "") {
        singleV = parseFloat($("#txtSinglePaymentValue").val());
    }
    if ($("#txtAnnualPaymentValue").val() !== "") {
        annualVal = parseFloat($("#txtAnnualPaymentValue").val());
    }
    if ($("#txtQuarterlyPaymentValue").val() !== "") {
        quarterlyVal = parseFloat($("#txtQuarterlyPaymentValue").val());
    }

    var jsonObject = {
        coverType: cover,
        singleVaL: singleV.toFixed(2),
        annual: annualVal.toFixed(2),
        quarterly:quarterlyVal.toFixed(2),
        csvStrMarkets:$("#ddlMarkets").val()
    };


    var url = "EQS690.aspx/BulkSaveMarketRates";
    var errorCode = "BLK-MKT-UPDT";
    console.log(jsonObject);
    setTimeout(
        function () {
            ajaxCall(url, jsonObject, errorCode, div, "#bttnSave");
        }, 1000);


});



function ajaxCall(appUrl, jsonObject, errorCode, div, button) {


    $.ajax({
        type: "POST",
        url: appUrl,
        data: JSON.stringify(jsonObject),
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (result) {
            $("#saving").hide();
            $(div).show();
            $(button).show();
            $("#successAlert").show();
            $("#errorAlert").hide();
            return true;
        },
        error: function (result) {
            console.log(result);

            var json = $.parseJSON(result.responseText);

            $("#lblError").html(
                "Something went wrong with saving your changes. If the problem continues please report the issue to the system administrator. <br/><br/>When reporting the issue please give error code <br/><b>" +
                errorCode + ": " + json.Message + "</b>");
            $("#saving").hide();
            $(div).show();
            $(button).show();
            $("#successAlert").hide();
            $("#errorAlert").show();

            return result;
        }
    });
}
$(“#bttnSave”)。单击(函数(){
$(“#successAlert”).hide();
$(“#errorAlert”).hide();
$(this.hide();
var div=“#action”;
$(div.hide();
$(“#保存”).show();
var-singleV=0.00;
var annualVal=0.00;
var quarterlyVal=0.00;
var cover=$('#ddlCoverTypes:selected').val();
if($(“#txtSinglePaymentValue”).val()!==“”){
singleV=parseFloat($(“#txtSinglePaymentValue”).val();
}
如果($(“#txtanualpaymentvalue”).val()!=“”){
annualVal=parseFloat($(“#txtanualpaymentvalue”).val();
}
if($(“#txtQuarterlyPaymentValue”).val()!=“”){
quarterlyVal=parseFloat($(“#txtQuarterlyPaymentValue”).val();
}
var jsonObject={
封面,
singleVaL:singleV.toFixed(2),
年度:每年固定(2),
季度:季度固定值(2),
csvStrMarkets:$(“#ddlMarkets”).val()
};
var url=“EQS690.aspx/BulkSaveMarketRates”;
var errorCode=“BLK-MKT-UPDT”;
log(jsonObject);
设置超时(
函数(){
ajaxCall(url、jsonObject、错误代码、div,“#bttnSave”);
}, 1000);
});
函数ajaxCall(appUrl、jsonObject、errorCode、div、button){
$.ajax({
类型:“POST”,
url:appUrl,
数据:JSON.stringify(jsonObject),
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
成功:功能(结果){
$(“#保存”).hide();
$(div.show();
$(按钮).show();
$(“#successAlert”).show();
$(“#errorAlert”).hide();
返回true;
},
错误:函数(结果){
控制台日志(结果);
var json=$.parseJSON(result.responseText);
$(“#lblError”).html(
“保存更改时出现问题。如果问题仍然存在,请向系统管理员报告问题。

报告问题时,请提供错误代码
”+ 错误代码+”:“+json.Message+”); $(“#保存”).hide(); $(div.show(); $(按钮).show(); $(“#successAlert”).hide(); $(“#errorAlert”).show(); 返回结果; } }); }
这是.Net代码

[ScriptMethod]
    [System.Web.Services.WebMethod]
    public static object BulkSaveMarketRates(string coverType, decimal singleVaL, decimal annual, decimal quarterly, List<string> csvStrMarkets)
    {
        var listOfParams = new List<SqlParameter>();

        var coverParam = new SqlParameter("@CoverType", SqlDbType.Char);
        var singleParam = new SqlParameter("@Single", SqlDbType.Decimal);
        var annualParam = new SqlParameter("@Annual", SqlDbType.Decimal);
        var quarterlyParam = new SqlParameter("@Quarterly", SqlDbType.Decimal);
        var marketsParam = new SqlParameter("@Markets", SqlDbType.VarChar);

        coverParam.Value = coverType;
        singleParam.Value = singleVaL;
        annualParam.Value = annual;
        quarterlyParam.Value = quarterly;

        var sb = new StringBuilder();

        foreach (var market in csvStrMarkets)
        {
            sb.Append($"{market}, ");
        }

        marketsParam.Value = sb.ToString().Trim().TrimEnd(',');

        listOfParams.Add(coverParam);
        listOfParams.Add(singleParam);
        listOfParams.Add(annualParam);
        listOfParams.Add(quarterlyParam);
        listOfParams.Add(marketsParam);

        return InsertOrUpdateRecord(listOfParams, "sp_UpdateMarketParametersAdminFee", false);
    }
[ScriptMethod]
[System.Web.Services.WebMethod]
公共静态对象BulkSaveMarketRates(字符串coverType、decimal singleVaL、decimal annual、decimal quarterly、List csvStrMarkets)
{
var listOfParams=新列表();
var coverParam=newsqlparameter(“@CoverType”,SqlDbType.Char);
var singleParam=新的SqlParameter(“@Single”,SqlDbType.Decimal);
var annualParam=新的SqlParameter(“@Annual”,SqlDbType.Decimal);
var quarteryParam=新的SqlParameter(“@Quarterly”,SqlDbType.Decimal);
var marketsParam=新的SqlParameter(“@Markets”,SqlDbType.VarChar);
coverParam.Value=coverType;
singleParam.Value=singleVaL;
年参数值=年;
季度参数值=季度;
var sb=新的StringBuilder();
foreach(csvStrMarkets中的var市场)
{
某人追加($“{market},”);
}
marketsParam.Value=sb.ToString().Trim().TrimEnd(',');
添加参数列表(coverParam);
添加(singleParam);
添加参数列表(年度参数);
参数列表。添加(四分之一参数);
添加(marketsParam)的参数列表;
返回InsertOrUpdateRecord(参数列表,“sp_UpdateMarketParametersAdminFee”,false);
}
这就是我得到的错误

序列化“System.Reflection.Module”类型的对象时检测到循环引用


我认为返回类型对象有一些不适合序列化的地方。此时未序列化webmethod返回的对象。你可以试试这个-

return new JavaScriptSerializer().Serialize(new { errMsg = "test" });
为此,必须包含
System.Web.Script.Serialization
。这样,返回对象中的结果将被序列化,javascript中的这一行将很好地接收到结果-

var json = $.parseJSON(result.responseText);

我现在会尝试,但它回避了一个问题:为什么它会在本地和测试中工作?我假设您在本地和测试机器的bin文件夹中有Newtonsoft.Json.dll?您是否也在生产中使用了它?@Coolshaw将我的代码更改为此,并将其应用到测试中,现在复制了我在live中遇到的问题,但在本地环境中工作得非常好现在在测试中工作,完全刷新使其工作。我将把这篇文章发布到制作部,看看它是如何将它传递给出版部的,并在大约15分钟后知道它是否成功