2013-05-14 69 views
2

我有一個標準的ASMX網絡服務。我想拋出一個自定義的異常,並讓它在客戶端被捕獲。唯一遇到的是SoapException。例如:如何在SOAP Web服務中傳播異常?

// 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異常發送?可能以某種方式序列化它?

回答

1

繼承根據MSDN:

'[...]由XML Web服務方法引發的任何異常拋出一個的SoapException [...]', Handling and Throwing Exceptions in XML Web Services

這就是說,沒有什麼可以阻止您創建一個例外包裝類和序列化,像@davogones這個帖子上建議:

How to serialize an Exception object in C#?

+0

包裝SoapException是毫無意義的,因爲這是Web服務拋出的唯一東西,但是您的第一個鏈接被證明是有用的,因爲它允許我將我真正的異常嵌入到XML節點中。 – AngryHacker 2013-05-14 18:18:39

1

讓你自定義的異常從的SoapException

+0

這不會起作用,因爲唯一的Web服務是扔SoapExceptions。 – AngryHacker 2013-05-14 18:09:38