2

標準の ASMX Web サービスがあります。カスタム例外をスローして、クライアント側でキャッチしたいと考えています。遭遇する唯一のものは、SoapException です。例:

// Server side code
[WebMethod]
public void foo(string bar) {
    throw new CustomException(bar);
}

public class CustomException : Exception {
    ....
}


// Client side code
public void CallFoo() {
    try {
        service.foo()
    }
    catch (CustomException ex) {
        Console.WriteLine(ex.Message);
    }
    catch (SoapException ex) {
        Console.WriteLine("IT ALWAYS HITS HERE");
    }
    catch (Exception ex) {
        Console.WriteLine(ex.Message);
    }
}

CustomException 例外を送信する方法はありますか? どういうわけかそれをシリアル化しますか?

4

2 に答える 2

1

カスタム例外を SoapException から継承させる

于 2013-05-14T16:17:17.553 に答える
1

MSDNによると:

「[...] XML Web サービス メソッドによってスローされたすべての例外は、SoapException[...] としてスローされます」、XML Web サービスでの例外の処理とスロー.

とはいえ、この投稿で @davogones が提案したように、例外ラッパー クラスを作成してシリアル化することを妨げるものは何もありません。

C#で例外オブジェクトをシリアル化するには?

于 2013-05-14T16:22:43.137 に答える