在我的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返回给客户端?
答案 0 :(得分:1)
您可以致电:
OperationContext.Current.IncomingMessageHeaders
在您的服务方法中,如果您愿意,可以检查那里的标题。在我看来,自定义MessageEncoder是用来做你所描述的错误的野兽。