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