我有一個asp.net web服務(不是WCF,但帶有WebMethods的經典.asmx)引發異常。例外所有從兩個基異常類(兩者自Exception派生)中的一個導出:如何確定由asp.net Web服務引發的異常類型?
public class InputException : Exception
{
....
}
public class FatalException : Exception
{
....
}
public class NoFilesFound: FatalException
{
....
}
....
的web服務需要現在拋出異常。在我的客戶端代碼,我可以捕捉到的異常,看到這樣的消息:
Server was unable to process request. ---> There were no files found
但是異常的類型FaultException異常的(因爲當我做.GetType()上捕捉到的異常所見)。調用客戶端需要能夠區分InputException和FatalException(並且最佳地區分各個派生的派生類,但這並不重要)。現在唯一的方法就是解析消息,在「--->」之前去掉文本並打開文本。這顯然不是最佳的。
我知道我可以拋出SoapExceptions與自定義代碼,但我想避免,如果可能的話。此外,它似乎專爲那些處理XML的人設計,但我們的所有Web服務代碼都不會觸及XML,因爲它已經爲我們反序列化了。
簡而言之,有沒有辦法讓我從Web服務中拋出自定義異常,並讓調用客戶端能夠區分異常?
謝謝!我想知道是否可以使我的自定義類從SoapException派生,然後使用構造函數構建XmlNode ... – user1079591 2012-01-17 21:27:45
@ user1079591,是的,您可以,它實際上是一種非常好的方式。 – 2012-01-17 21:29:28
所以我按照你的建議做了,但是在客戶端代碼中,它並沒有將它作爲SoapException而是作爲System.ServiceModel.FaultException捕獲。在我的代碼中,我有兩個catch塊:一個用於SoapException,一個用於常規異常,並且它總是進入常規異常,並且當我執行異常時。GetType()表示它是System.ServiceModel.FaultException類型。 – user1079591 2012-01-17 21:45:13