在我的 WCF 服务中,我实现了一个自定义编码器,它继承自System.ServiceModel.Channels.MessageEncoder
.
在那个编码器中,我获取原始消息并在我的ReadMessage()
方法覆盖中操作接收到的标头。
在此操作期间,有时我可能会在标头中检测到使消息无效的内容,并且我想向客户端返回一个有用的异常。
我试过了:
throw new Exception("Some useful message");
和:
throw new FaultException("Some useful message");
它们都向客户端返回 HTTP 400,但没有响应正文。
我可以很高兴地从我的实际 Web 服务方法中抛出一个FaultException
,它会正确返回给客户端,但是在处理的后期阶段,我不再可以访问 SOAP 标头(除非有人可以告诉我其他情况)。
如何根据 SOAP 标头中的信息向客户端返回带有友好消息的响应 500?