如果我像msdn中的这篇文章一样使我的异常可序列化,那么我的异常可以通过 WCF 序列化吗?
问问题
3658 次
2 回答
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 - 编写帮助程序来序列化/反序列化异常。如果你也需要这部分的帮助,请告诉我。
我希望这有帮助。
于 2009-11-18T14:11:17.610 回答
0
我不明白为什么不,如果您成功创建了一个可以通过经典 asmx 序列化的对象,那么在 WCF 中就可以了。
于 2009-11-18T11:18:04.977 回答