我有一些用WCF实现的REST web服务。我希望让这些服务在xml包含无效元素时返回"Bad Request“。
XmlSerializer正在处理xml序列化。默认情况下,XmlSerializer会忽略未知元素。我知道挂接XmlSerializer.UnknownElement并从此处理程序抛出异常是可能的,但因为这是在WCF中进行的,所以我无法控制序列化。有没有办法实现这个行为。
发布于 2009-07-01 11:30:35
“我知道有可能挂钩XmlSerializer.UnknownElement并从此处理程序抛出异常,但因为这是在WCF中,所以我无法控制序列化。”
这样做实际上是可能的.
在我参与的一个WCF项目中,我们使用IDispatchMessageFormatter接口做了类似的事情。
欲了解更多信息,请访问http://nayyeri.net/blog/use-idispatchmessageformatter-and-iclientmessageformatter-to-customize-messages-in-wcf/
它允许你在消息头、控制序列化/反序列化、返回状态码等方面达到峰值。
发布于 2008-10-02 16:15:28
也许你可以返回你自己的实现IXmlSerializable的类型,并在ReadXml和WriteXml方法中处理你想要的异常...
发布于 2008-10-02 16:31:35
这来自于模糊的记忆,因为我手头没有所有的代码,但您可以创建一个自定义消息(继承类" 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)
{
...
}不是一个完整的答案,但可能会推动你走上正确的道路。
https://stackoverflow.com/questions/156880
复制相似问题