2

ASP.Net ページから WCF メソッドを呼び出していますが、WCF が JavaScript から受け取った recordIds パラメータを逆シリアル化しようとすると、フォーマット例外が発生します。

WCF メソッドに渡される最初のパラメーターは、List 型である必要があります。JSON.stringify を使用する際に何か問題がありますか?

WCF を呼び出す Javascript コード

       function Update() {
        var myarray1 = new Array();
        myarray1[0] = 1;
        myarray1[1] = 11;
        myarray1[2] = 14;
        WCFService1.AJAXEnabledService.BatchUpdateRecords(
          JSON.stringify({recordIDs: myarray1}) , "ddsd", "gggg", 
          updateGrid, OnError);
    }

上記の JavaScript によって呼び出される WCF メソッド

   [OperationContract]
    public bool BatchUpdateRecords(List<int> recordIds, string columnNameToUpdate, string columnValue)
    {

        DataTable tierIDsTable = new DataTable("RecordIds");
        tierIDsTable.Columns.Add(new DataColumn("Integer", typeof(Int32)));
        tierIDsTable.PrimaryKey = new DataColumn[] { tierIDsTable.Columns["TierId"] };

        foreach (int recordId in recordIds)
        {
            tierIDsTable.Rows.Add(recordId);
        }
        return true;
    }
4

2 に答える 2

1

100%確かではありませんが、これを試しましたか?

WCFService1.AJAXEnabledService.BatchUpdateRecords(
    myarray1,
    "ddsd",
    "gggg",
    updateGrid, OnError);
于 2013-03-15T03:17:56.910 に答える
1

この問題 (受け取ったエラーを認識していない) は、複数のパラメーター タイプを渡そうとしている可能性が最も高いです。通常、WCF はオブジェクトをサポートせず、代わりに期待します。パラメーターを使用して応答クラスを作成し、代わりにそれを使用します。

public class ResponseObject 
{
    public List<int> recordIds { get; set; } 
    public string columnNameToUpdate { get; set; }
    public string columnValue { get; set; }
}

このオブジェクトをパラメーターとして使用します

public bool BatchUpdateRecords(ResponseObject responseObject) 
{...
于 2013-03-15T03:20:13.597 に答える