我正在使用通过 JS ajax 调用调用的 WCF Rest 服务。
对于某些方法,如果发生异常,它会被捕获并包装在WebFaultException中,该异常的状态代码设置为 500(内部服务器错误)并被抛出。
对于具有这种行为的方法,我们注意到在某个时间点产生异常的整个调用链被重试了看似随机的次数,有时只是一次,有时是 3、5 甚至 7 次,然后控制传递返回客户端并显示错误消息。
WebService 在 IIS 中运行,如果我将调试器连接到它,重试逻辑将不再发生,可能是因为 VisualStudio 由于未处理的异常而停止执行。
起初,这种行为似乎指向WS-ReliableMessaging,但从文档中应该明确启用它。Anb 我们使用的是 WebHttpBinding,不支持 afaik。
如果我将异常行为更改为不抛出WebFaultException
,则此行为将停止。
为什么会这样?