我有一个带有一种异步方法 updateUsers 的 WCF 服务。用户名是唯一的,所以当我保存更改时,如果存在分配给新用户的用户名,我会收到 UpdateException。
我创建了一个自定义异常 UniqueKeyUsersException,它具有三个属性,一个带有 ID 的 int64 和两个字符串,一个用于用户名,另一个用于密码。目前是数据库表中的所有字段。
这个异常,被装饰为 Serializable 并实现了 ISerializable 接口。有了这个,我可以将信息发送给客户。如果我不实现这个接口,到客户端会出现异常,但是所有的属性都是空的。
一切正常,客户端到达带有存在的用户名信息的 FaultException。
但是,我正在考虑在异常中仅使用一个属性的可能性,即用户类型,这是我在外部库中拥有的自我跟踪实体。这个想法是将具有数据库中存在的寄存器的实体发送给客户端,因此用户可以决定查看现有用户的信息。这样,用户保存了做新查询所需。如果我要使用我的三个属性发送异常,我将必须创建一个新对象 Users 并将异常中的信息转换为 Users 实体。
我的问题是,当我在异常中添加用户类型的属性(一个 STE)时,当我抛出 FaultException 时,它会失败,使服务崩溃。我认为这可能是出于序列化的原因,可能需要在 ISerialize 的实现中添加 STE 的序列化。
但这将是很多工作,因为STE不仅有数据库的信息,还有实体的跟踪和其他属性。
所以我的问题是是否存在使用 STE 作为异常属性的任何方式,或者我只能使用基本类型?
谢谢。戴姆洛克。