2012-07-03 108 views
1

在我的WCF服務中,我實現了一個繼承自System.ServiceModel.Channels.MessageEncoder的自定義編碼器。如何從WCF自定義MessageEncoder中引發異常並將其返回給客戶端?

在這種編碼器中,我走的原始消息和操縱接收的頭在我的ReadMessage()方法的重寫。

在此操作,我有時會發現一些在這使得消息無效的標題,我想一個有用的異常返回給客戶端。

我曾嘗試:

throw new Exception("Some useful message"); 

和:

throw new FaultException("Some useful message"); 

他們都返回一個HTTP 400客戶端沒有響應主體。

我可以愉快地從我的實際web服務方法中拋出一個FaultException,這會正確地返回給客戶端,但是在處理的後期階段,我不再能夠訪問SOAP頭(除非有人能夠告訴我,否則) 。

如何根據SOAP頭中的信息以友好的消息向客戶端返回響應500?

回答

1

您可以撥打:

OperationContext.Current.IncomingMessageHeaders 

在您的服務方法,如果你想檢查頭那裏。一個自定義的MessageEncoder在我看來是用來做你描述的錯誤的野獸。

+0

我明白你的意思,但我沒有選擇,只能在早期階段檢查標題。我們在全國範圍內授權實施WCF根本無法啓用的安全方案。說這樣做,在編碼器中儘量減少並且用你的方法提高例外似乎是一個很好的解決方案。 –

相關問題