【发布时间】:2012-02-12 16:11:59
【问题描述】:
我有一个抛出异常的 asp.NET Web 服务(不是 WCF,而是带有 WebMethods 的经典 .asmx 服务)。异常都派生自两个基本异常类之一(两者都派生自 Exception):
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 服务中抛出自定义异常,并让调用客户端能够区分这些异常?
【问题讨论】:
标签: c# asp.net web-services exception soap