我有一个asp.NET Web服务(不是WCF,而是带有WebMethods的经典.asmx),它会抛出异常.所有异常都来自两个基本异常类之一(两者都派生自Exception):
public class InputException : Exception
{
....
}
public class FatalException : Exception
{
....
}
public class NoFilesFound: FatalException
{
....
}
....
Run Code Online (Sandbox Code Playgroud)
Web服务现在根据需要抛出异常.在我的客户端代码中,我可以捕获异常并看到如下消息:
Server was unable to process request. ---> There were no files found
但是异常是FaultException类型(当我在捕获的异常上执行.GetType()时看到).调用客户端需要能够区分InputException和FatalException(并且最佳地区分各个派生的但却不那么重要).现在唯一的方法是解析消息,在"--->"之前剥离文本并打开文本.这显然不是最佳的.
我知道我可以使用自定义代码抛出SoapExceptions但我想尽可能避免这种情况.此外,它似乎是为那些处理XML的人而设计的,但是我们所有的web服务代码都没有触及XML,因为它已经为我们反序列化了.
简而言之,我是否有办法从Web服务中抛出自定义异常,并且调用客户端能够区分异常?