gpt4 book ai didi

c# - 返回 List 时 Asp.net Webservice 不工作
转载 作者:太空宇宙 更新时间:2023-11-03 15:08:22 24 4
gpt4 key购买 nike

我正在尝试从 Web 服务返回列表类型。我使用了来自 here 的类似版本.

我收到以下错误:

System.InvalidOperationException: There was an error generating the XML document. ---> System.InvalidOperationException: The type System.Collections.Generic.List`1[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]] may not be used in this context.

代码:

 [WebMethod]
public List<object> getnpsTrend(string region, string client, string product)
{
List<object> iData = new List<object>();
List<string> labels = new List<string>();

labels.Add ("test1");
iData.Add(labels);
return iData;
}

提前感谢您的帮助!

更新:经过几个小时的努力,我发现只有当我的列表对象包含另一个复杂对象(如数组/另一个列表)时它才起作用。它以其他方式工作。以下代码产生了完美的结果。

[WebMethod]
public List<Object> getnpsTrend()
{
List<Object> li = new List<object>();
string obj = "Test";
li.Add(obj);
return li ;
}

但我需要一个包含列表的列表作为返回类型。有什么方法可以创建具有所需结构的用户定义类型,该类型将由 xml 序列化?

最佳答案

经过多次搜索,我找到了解决方案。我想,当我们使用更复杂的返回类型时,我们将不得不使用类来定义结构。只有这样 asp 才能映射它,否则它只会显示不相关的错误消息:)。值得庆幸的是,另一个人有一个 similar question .

如果您正在寻找答案,请在下面找到代码:

[WebMethod]        
public List<ChartDatasets> getnpsTrend(string region, string client, string product)
{
List<ChartDatasets> chart1 = new List<ChartDatasets>();
List<string> lblnames = new List<string>();

DataTable dt = biz.FetchData_RCP("", region, client, product);
dt.TableName = "data";
foreach (DataRow drow in dt.Rows)
{
lblnames.Add(drow["Timeline"].ToString());
}


Labels lbl1 = new Labels();
lbl1.LabelNames = lblnames;


List<Decimal> lst_dataItem_1 = new List<Decimal>();
foreach (DataRow dr in dt.Rows)
{
lst_dataItem_1.Add(Convert.ToDecimal(dr["NPSScore"].ToString()));
}
dataset_deci ds1_class = new dataset_deci();
ds1_class.Value = lst_dataItem_1;

List<Decimal> lst_dataItem_2 = new List<Decimal>();
foreach (DataRow dr in dt.Rows)
{
lst_dataItem_2.Add(Convert.ToDecimal(dr["Promoter_Count"].ToString()));
}
dataset_deci ds2_class = new dataset_deci();
ds2_class.Value = lst_dataItem_2;


chart1.Add(new ChartDatasets { Lbls = new List<Labels> { lbl1 }, ds1 = new List<dataset_deci> { ds1_class }, ds2 = new List<dataset_deci> { ds2_class } });
return chart1;
}

public class ChartDatasets
{
public List<Labels> Lbls;
public List<dataset_deci> ds1;
public List<dataset_deci> ds2;
}

public class Labels
{
public List<string> LabelNames;
}

public class dataset_deci
{
public List<Decimal> Value;
}

关于c# - 返回 List<object> 时 Asp.net Webservice 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42271566/

24 4 0