我在WCF中實現了一些REST Web服務。我希望這些服務在xml包含無效元素時返回「Bad Request」。控制WCF XmlSerializer
xml序列化由XmlSerializer處理。默認情況下,XmlSerializer忽略未知元素。我知道可以鉤住XmlSerializer.UnknownElement並從這個處理程序中拋出一個異常,但是因爲這是在WCF中,所以我無法控制序列化。任何想法我可能會實現這種行爲。
我在WCF中實現了一些REST Web服務。我希望這些服務在xml包含無效元素時返回「Bad Request」。控制WCF XmlSerializer
xml序列化由XmlSerializer處理。默認情況下,XmlSerializer忽略未知元素。我知道可以鉤住XmlSerializer.UnknownElement並從這個處理程序中拋出一個異常,但是因爲這是在WCF中,所以我無法控制序列化。任何想法我可能會實現這種行爲。
「我知道這是可能掛鉤XmlSerializer.UnknownElement並從該處理程序拋出一個異常,而是因爲這是WCF我有超過系列化無控制」
它實際上可能做到這一點.. 。
在我工作的WCF項目中,我們使用IDispatchMessageFormatter接口做了類似的事情。
發現它可以讓你在高峯郵件頭,控制序列化/反序列化,返回狀態碼等
也許你可以返回自己的類型實現IXmlSerializable的投擲攻擊你在的ReadXml和方法中WriteXML想要的例外......
這是模糊的記憶,因爲我沒有所有的代碼,以手,但您可以創建一個自定義消息(繼承「Message」類)類型以在您的REST服務中返回並覆蓋某些創建自定義響應的方法。
protected override void OnWriteMessage(XmlDictionaryWriter writer)
{
...
}
protected override void OnWriteStartEnvelope(XmlDictionaryWriter writer)
{
...
}
protected override void OnWriteStartBody(XmlDictionaryWriter writer)
{
...
}
protected override void OnWriteBodyContents(XmlDictionaryWriter writer)
{
...
}
不是一個完整的答案,但可能會推動你走向正確的道路。
鏈接已經死了。 – 2015-05-06 23:03:37