将 Web 服务方法/调用包装到 try/catch block 中是否是最佳实践?
我不认为 Web 服务请求往往是 .NET 桌面应用程序崩溃的原因吗?所以我想所有的调用都应该包含在 try/catch 中以防止这种情况发生。
好主意吗?
此外,它应该抛出异常还是只是有一个空捕获?
最佳答案
我假设您正在使用 WCF,因为您的问题已用它标记。使用 WFC 进行异常处理的一个良好实践是不允许异常通过网络冒泡到您的使用者,而是抛出有意义的FaultExceptions。
如果有可能产生异常,您的操作中应该始终有一个 try...catch block 。如果您允许原始异常(exception)冒泡,则只会导致两种情况: 如果您已将服务配置为允许错误中的异常详细信息,则您将暴露服务的内部结构,从而导致安全漏洞。或者您没有在服务中配置此功能,并且消费者会收到一条非常通用的消息,表明出现了问题,这对他们或支持团队来说不是很有用。
您应该做的是声明一个或多个FaultExceptions,具体取决于您希望用户从操作中接收哪些消息,将它们装饰为操作声明中的FaultContracts。然后你可以尝试...捕获特定的异常并抛出特定的错误。您还可以使用 try...catch 来捕获异常并抛出非常一般的错误。
这里的关键是不要透露太多有关内部操作的信息 - 特别是堆栈跟踪!
错误只是另一个数据协定,因此它在您的 WSDL 中声明。这意味着您的使用者可以专门捕获错误,并且可以对您的操作引发的错误使用react,就像从其代码中抛出异常一样。
希望这有帮助。
乔。
关于asp.net - 将 Web 服务包装在 try/catch block 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/359633/