当前位置: 首页 > 面试题库 >

使用WCF,LINQ,JSON时无法序列化'System.Linq.Enumerable…'类型的参数

柴浩大
2023-03-14
问题内容

我有WCF服务。它使用Linq-to-objects从字典中进行选择。对象类型很简单:

public class User 
{
   public Guid Id;
   public String Name;
}

中存储了一个集合Dictionary<Guid,User>

我想要一个这样的WCF OperationContract方法:

public IEnumerable<Guid> GetAllUsers()
{
    var selection = from user in list.Values
        select user.Id;
     return selection;
}

它可以很好地编译,但是当我运行它时,我得到:

服务器在处理请求时遇到错误。异常消息是2[Cheeso.Samples.Webservices._2010.Jan.User,System.Guid]' (for operation 'GetAllUsers', contract 'IJsonService') because it is not the exact type 'System.Collections.Generic.IEnumerable方法签名中的’无法序列化’System.Linq.Enumerable
+ WhereSelectEnumerableIterator 1 [System.Guid]
类型的参数”,并且不在已知的类型集合中。为了序列化参数,请使用ServiceKnownTypeAttribute将类型添加到该操作的已知类型集合中。有关更多详细信息,请参见服务器日志。

如何强制选择成为IEnumerable<Guid>

编辑
如果我修改代码来执行此操作,则效果很好-良好的互操作性。

public List<Guid> GetAllUsers()
{
    var selection = from user in list.Values
        select user.Id;
     return new List<Guid>(selection);
}

有没有办法让我避免创建/实例化List<T>


问题答案:

不,必须从Web服务返回一个具体的类。使返回类型为List并完成它。



 类似资料:
  • 我需要通过(.NET Framework内置类型)。由于此类型本身无法序列化,因此我从中派生了助手类: 它严重地序列化为XML;然而,当我试图将其传递给服务调用时,我得到了System.运行时。连载。无效数据合同异常: “类型”系统。网网络信息。无法序列化PhysicalAddress“”。考虑使用DATACONTractAttor属性对其进行标记,并标记要使用DATAMEMBAREATE属性序列

  • 问题内容: 我对WCF有点陌生,将尝试清楚地描述我要做什么。 我有一个使用JSON请求的WCF Web服务。我在大多数情况下都可以很好地发送/接收JSON。例如,以下代码可以正常运行,并且符合预期。 JSON已发送: WCF: 这将按预期返回带有“ Dave”的JSON对象。问题是我无法始终保证我收到的JSON与我的DataContract中的成员完全匹配。例如,JSON: 由于大小写不匹配,将无

  • 本文向大家介绍wcf WCF中的序列化,包括了wcf WCF中的序列化的使用技巧和注意事项,需要的朋友参考一下 示例 序列化是将对象转换为字节流以存储对象或将其传输到内存,数据库或文件的过程。Microsoft页面序列化 下面的示例演示了WCF中的序列化: [DataContract]属性与类一起使用。在这里,它装饰有Person阶级。 [OperationContract]用于方法。在这里用Ad

  • 我有一门课是这样的: 但是当我试图序列化它时,我收到一个错误,上面写着“试图序列化java.lang.class:java.lang.字符串。忘记注册一个类型适配器了吗?”。所以我创建了这个适配器: } 并登记如下: 但我还是犯了同样的错误<我做错了什么 适配器的实现看起来正常吗?

  • 这是我的视图模型: 我正在用数据加载视图模型,并将其传递给视图并序列化它: 但是我得到了这个错误 “类型”系统。网状物无法序列化HttpPostedFileWrapper“”。考虑使用DATACONTractAttor属性对其进行标记,并标记要使用DATAMEMBAREATE属性序列化的所有成员。如果类型是集合,请考虑用CopyDATAcNoTractAttor标记它。见微软。其他受支持类型的NE

  • 问题内容: 我正在尝试将json数据反序列化为模型类,但是失败了。这是我的工作: 这是我的模型的样子: 您可以看到我到达这里的Json:http : //api.worldbank.org/incomeLevels/LIC/countries? format=json 这是我得到的错误: 无法将JSON数组反序列化为“ Mvc4AsyncSample.Models.CountryModel”类型。