我正在使用一个使用 WCF 服务的客户端。在各种情况下,服务只是引发一个带有关联消息的 FaultException,告知给定故障背后的原因。
其中一些错误是可以由我们的客户端应用程序处理的事情,但我犹豫是否简单地尝试对 FaultExceptions 消息或原因执行一些字符串匹配以确定它是否是我们可以满足的。
我希望 FaultException 上的 FaultCode 可用于识别我们可以处理的特定类型的故障,但似乎这纯粹是为了识别少数 SOAP 故障。如果我对此的解释不正确,请纠正我。
我知道可能会引发 FaultException,但我觉得期望为错误背后的每个原因创建一个新类型是不现实的。
你如何处理这种情况。作为一个人为的例子。考虑一个提供以下方法的服务;
RecordDetails GetRecordById(string id)
void Add(RecordDetails record)
void Update(RecordDetailsUpdateRequest rdur)
现在在上面的示例中,如果您使用不存在的 id 调用 GetRecordById,您会收到一个 FaultException 和一条消息,指出“找不到记录”。类似地,如果您为已存在的记录调用 Add,或为不存在的记录调用 Update,您只需获取 FaultException 和 Message/Reason,详细说明失败的原因。我需要知道记录是否存在以确定我应该更新还是插入。正如我所提到的,我对简单地匹配字符串犹豫不决,因为我无法控制它们是否保持不变。
在这种情况下您会期望什么(与 FaultException 关联的类型,详细说明 RecordNotFoundException 等)或与 FaultException 关联的某个泛型类型,它定义了与错误相关的特定详细信息。例如,带有成员 Code(失败原因的常量或枚举标识符)的 RecordOperationExcpetion 类,以及用户友好的消息。
至少通过这种方式,我可以识别错误原因,而无需求助于字符串匹配。
感谢您的想法。