Вернуться список <object>от веб-сервиса - PullRequest
0 голосов
/ 23 февраля 2019

Я работаю над линейным графиком, используя Chartjs, и получаю сообщение об ошибке от моего веб-сервиса.Вот код службы:

[WebMethod]
    public List<object> getProgram12Months(string usersessionid)
    {
        List<object> iData = new List<object>();
        List<string> labels = new List<string>();

        //First get distinct Month Name for select Year.
        string query1 = "SELECT DISTINCT TOP (100) PERCENT TimeFrame FROM dbo.CSQ_ProgramCount12Months ORDER BY TimeFrame ";

        string conn = ConfigurationManager.ConnectionStrings["LocalSqlServer"].ConnectionString;
        SqlDataAdapter dap = new SqlDataAdapter(query1, conn);
        DataSet ds = new DataSet();
        dap.Fill(ds);
        DataTable dtLabels = ds.Tables[0];


        foreach (DataRow drow in dtLabels.Rows)
        {
            labels.Add(drow["TimeFrame"].ToString());
        }
        iData.Add(labels);

        return iData;
    }

Когда я вызываю метод из браузера, я получаю следующую ошибку:

System.InvalidOperationException: Произошла ошибка при созданииXML документ---> System.InvalidOperationException: тип System.Collections.Generic.List`1 [[System.String, mscorlib, версия = 2.0.0.0, Culture = нейтральный, PublicKeyToken = b77a5c561934e089]] не может использоваться в этом контексте.

Я основываюсь на этом на этом .

Ответы [ 2 ]

0 голосов
/ 24 февраля 2019

Я решил это, создав два класса и заполнив их.Спасибо, э-шо, твои посты помогают вести меня в правильном направлении.

public class ChartData2
    {
        public List<string> Legends;
        public List<int> AD;


    }

    public class Legend
    {
        public List<string> Months;
    }
0 голосов
/ 23 февраля 2019

Список не сериализуем для веб-метода, вместо этого вы можете вернуть объект [].

[WebMethod]
    public object[] getProgram12Months(string usersessionid)
    {
        List<object> iData = new List<object>();
        List<string> labels = new List<string>();

        //First get distinct Month Name for select Year.
        string query1 = "SELECT DISTINCT TOP (100) PERCENT TimeFrame FROM dbo.CSQ_ProgramCount12Months ORDER BY TimeFrame ";

        string conn = ConfigurationManager.ConnectionStrings["LocalSqlServer"].ConnectionString;
        SqlDataAdapter dap = new SqlDataAdapter(query1, conn);
        DataSet ds = new DataSet();
        dap.Fill(ds);
        DataTable dtLabels = ds.Tables[0];


        foreach (DataRow drow in dtLabels.Rows)
        {
            labels.Add(drow["TimeFrame"].ToString());
        }
        iData.Add(labels.ToArray());

        return iData.ToArray();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...