none
WCF中可选参数调用失败 RRS feed

  • 问题

  •  WCF中使用方法RetrieveListArray(string StoredProcdureName, String[] ParameterName = null, String[] ParameterValue = null)如下:

    [OperationContract]
            public List<string[]> RetrieveListArray(string StoredProcdureName, String[] ParameterName = null, String[] ParameterValue = null)
            {
                try
                {
                    SqlConnection Conn = new SqlConnection();
                    Conn.ConnectionString = DatabaseConnectionString;
                    Conn.Open();
                    SqlCommand command = new SqlCommand(StoredProcdureName, Conn);
                    command.CommandType = CommandType.StoredProcedure;
                    if (ParameterName != null)
                    {
                        AddParameter(command, ParameterName, ParameterValue);
                    }
                    SqlDataAdapter DA = new SqlDataAdapter(command);
                    DataSet DS = new DataSet();
                    DA.Fill(DS);
                    Conn.Close();
                    DataTable DT = new DataTable();
                    DT = DS.Tables[0];
                    if (DT.Rows.Count > 0)
                    {
                        List<string[]> returnList = new List<string[]>();
                        string[] listArray = new string[DT.Columns.Count];
                        for (int i = 0; i < DT.Rows.Count; i++)
                        {
                            for (int j = 0; j < DT.Columns.Count; j++)
                            {
                                listArray[j] = DT.Rows[i][j].ToString();
                            }
                            returnList.Add(listArray);
                        }
                        return returnList;
                    }
                    else
                    {
                        return null;
                    }
                }
                catch (Exception ex)
                {
                    List<string> backlist = new List<string> { ex.Message };
                    return null;
                }
            }

    可是在SL中调用

    WCFServiceReference.ServiceWCFClient client = new V10Silverlight4WCF.WCFServiceReference.ServiceWCFClient();
                client.RetrieveListArrayAsync("area_tree");

    却被提示欠缺参数,但如此调用却可以client.RetrieveListArrayAsync("area_tree",null,null);

    怎么会这样呀?不是可以不写后两个可选参数的吗?都晕倒了。哪位老大指点迷津?


    菜爷
    2011年3月23日 6:58

答案

  • 你这个问题 我觉得主要是vs不支持这样生成   你只能重载方法了  就是方法名同样 参数不同

    • 已标记为答案 菜爷 2011年3月28日 1:21
    2011年3月27日 7:50

全部回复