如果我使我的异常Serializable像这样article from msdn,那么我的异常是否可以通过WCF序列化?
答案 0 :(得分:1)
是的,您可以序列化异常并使用WCF返回它们。我编写了一个应用程序,其中WCF客户端必须具有在服务器上发生的真实异常;不只是一个高级别的错误。
以下是实施我们所做工作的步骤:
1 - 使用单个字符串属性声明类EncodedException
public class EncodedException
{
public string SerializedException {get;set;}
}
2 - 在服务合同上添加属性以指示您的服务可能返回FaultException异常。
[ServiceContract()]
public class MyService
{
[OperationContract]
[FaultContract(typeof(EncodedException),
ProtectionLevel = ProtectionLevel.EncryptAndSign)]
public string Method1 ();
}
3 - 在您的服务实现中,在所有服务操作中添加try / catch:
public void Method1()
{
try
{
// some code here
}
catch( Exception ex)
{
EncodedException encodedException = Helper.SerializeException( ex );
throw new FaulException<EncodedException>();
}
}
4 - 在您的客户端代码中捕获异常并解开它:
public void someMethod()
{
try
{
serviceClient.Method1();
}
catch( FaulException<EncodedException> ex)
{
Exception decodedException = Helper.DeserializeException( ex );
throw new decodedException();
}
}
5 - 编写Helper以序列化/反序列化异常。如果您也需要帮助,请告诉我。
我希望这会有所帮助。
答案 1 :(得分:0)
我不明白为什么不,如果你已经成功创建了一个可以在经典asmx上序列化的对象,那么它在WCF中就可以了。