【问题标题】:Send devExpress Session as parameter in wcf service在 wcf 服务中发送 devExpress 会话作为参数
【发布时间】:2020-03-23 10:31:02
【问题描述】:

当我想在 WCF 中以复合类型发送 devExpress 会话时出现异常。 我试图让它可序列化,但我仍然得到错误

信息:输入System.Data.SqlClient.SqlConnection 和数据 合同名称 SqlConnection:http://schemas.datacontract.org/2004/07/System.Data.SqlClient 预计不会。如果您是,请考虑使用DataContractResolver 使用DataContractSerializer 或添加任何静态未知的类型 已知类型的列表 - 例如,通过使用 KnownTypeAttribute 属性或通过将它们添加到传递给 序列化器。

这是我使用的 DataContract。

[DataContract] 
[Serializable] 
[ServiceKnownType(typeof(Session))] 
[ServiceKnownType(typeof(SqlConnection))] 
[ServiceKnownType(typeof(SqlParameter))] 
public class CompositeType 
{
 Session sValue ; 
 [DataMember] 
 public Session SessionValue 
 { get {return sValue; } set {sValue = value; } } 

  }

我还使用了一种将此类作为参数发送的方法

void GetDataUsingDataContract(CompositeType composite); 

【问题讨论】:

  • 您能否提供有关您发送的数据或类的更多信息?
  • [DataContract] [Serializable] [ServiceKnownType(typeof(Session))] [ServiceKnownType(typeof(SqlConnection))] [ServiceKnownType(typeof(SqlParameter))] public class CompositeType { Session sValue ; [DataMember] public Session SessionValue { get {return sValue; } set {sValue = value; } } } 这是我使用的 DataContract。我还使用了一种将此类作为参数发送的方法` void GetDataUsingDataContract(CompositeType composite); `
  • 也请添加到您的问题中。您是否在会话中使用数据库连接存储某些内容?
  • 我的目标是从 devexpress xpo 接口创建一个会话,然后将其发送到 wcf 服务以填充数据库中的信息
  • XPO 已经具有通过 WCF 服务传输数据的内置机制。你能解释一下为什么这不适合你吗?见:Transferring Data via WCF Services

标签: c# wcf devexpress xpo


【解决方案1】:

XPO 对象通过 Session 绑定到数据存储,您不能通过网络发送它们。

如果您只想在计算机之间传输原始数据,请使用Data Transfer Object。 XPO 将在一侧从数据库中检索数据,而您将在另一侧使用 WCF 客户端方法检索数据。

XPO 还支持更复杂的场景。如果您想在客户端使用 XPO 但出于安全原因无法创建直接数据库连接,您可以在 WCF 端将IDataStore 接口实现为契约。

实现 IDataStore 接口很容易,因为您只需要包装现有的Data Store Adapter。所有数据存储适配器都实现 IDataStore 接口。 XPO 的Data Access Layer 可以使用任何IDataStore 作为数据源。此博客解释了这种方法:XPO is good for distributed applications

此外,XPO 具有内置的 WCF 服务和已经实现 IDataStore 接口的客户端组件。您所需要的只是将它们放在一起。在此处查看示例:Transferring Data via WCF Services

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-10
  • 2012-09-03
  • 2011-07-15
  • 2014-08-25
  • 1970-01-01
  • 2014-10-17
  • 1970-01-01
相关资源
最近更新 更多