使用Service Fabric远程处理捕获自定义异常

时间:2018-04-14 08:35:49

标签: azure-service-fabric

以下文档详细介绍了Service Fabric远程处理中的异常处理(我使用V2):

https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-reliable-services-communication-remoting#remoting-exception-handling

它有以下段落:

  

服务API抛出的所有远程异常都会被发送回   客户端为AggregateException。 RemoteExceptions应该是DataContract   序列化;如果不是,代理API会抛出ServiceException   其中包含序列化错误。

我在服务之间共享的.NET Core类库中做了以下异常:

[DataContract]
public class DuplicateEntityException : Exception
{
    public DuplicateEntityException(string message = "Duplicate entity.") : base(message) { }
}

我在被叫服务中抛出异常后得到以下消息:

System.AggregateException: One or more errors occurred. (The exception DuplicateEntityException was unhandled on the service and could not be serialized for transferring to the client.

如果我只是抛出Exception,它就会正确序列化。

任何帮助我的异常类DataContract可序列化都会非常感激。

1 个答案:

答案 0 :(得分:2)

我所要做的就是:

[Serializable()]
public class DuplicateEntityException : Exception, ISerializable
{
    public DuplicateEntityException(string message = "Duplicate entity.") : base(message) { }

    public DuplicateEntityException(SerializationInfo info, StreamingContext context) : base(info, context) { }
}