msdnのこの記事のように例外を Serializable にした場合、例外を 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 に答える