1

在我的 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?

4

1 回答 1

1

您可以致电:

OperationContext.Current.IncomingMessageHeaders

如果您愿意,可以在您的服务方法中检查那里的标题。在我看来,自定义 MessageEncoder 是用来做你描述的事情的错误野兽。

于 2012-07-03T13:13:31.653 回答