首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >控制WCF XmlSerializer

控制WCF XmlSerializer
EN

Stack Overflow用户
提问于 2008-10-01 09:40:40
回答 3查看 1.7K关注 0票数 2

我有一些用WCF实现的REST web服务。我希望让这些服务在xml包含无效元素时返回"Bad Request“。

XmlSerializer正在处理xml序列化。默认情况下,XmlSerializer会忽略未知元素。我知道挂接XmlSerializer.UnknownElement并从此处理程序抛出异常是可能的,但因为这是在WCF中进行的,所以我无法控制序列化。有没有办法实现这个行为。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-07-01 11:30:35

“我知道有可能挂钩XmlSerializer.UnknownElement并从此处理程序抛出异常,但因为这是在WCF中,所以我无法控制序列化。”

这样做实际上是可能的.

在我参与的一个WCF项目中,我们使用IDispatchMessageFormatter接口做了类似的事情。

欲了解更多信息,请访问http://nayyeri.net/blog/use-idispatchmessageformatter-and-iclientmessageformatter-to-customize-messages-in-wcf/

它允许你在消息头、控制序列化/反序列化、返回状态码等方面达到峰值。

票数 2
EN

Stack Overflow用户

发布于 2008-10-02 16:15:28

也许你可以返回你自己的实现IXmlSerializable的类型,并在ReadXml和WriteXml方法中处理你想要的异常...

票数 1
EN

Stack Overflow用户

发布于 2008-10-02 16:31:35

这来自于模糊的记忆,因为我手头没有所有的代码,但您可以创建一个自定义消息(继承类" Message ")类型来在您的REST服务中返回,并覆盖某些方法来创建自定义响应。

代码语言:javascript
复制
    protected override void OnWriteMessage(XmlDictionaryWriter writer)
    {
        ...
    }

    protected override void OnWriteStartEnvelope(XmlDictionaryWriter writer)
    {
        ...
    }

    protected override void OnWriteStartBody(XmlDictionaryWriter writer)
    {
        ...
    }

    protected override void OnWriteBodyContents(XmlDictionaryWriter writer)
    {
        ...
    }

不是一个完整的答案,但可能会推动你走上正确的道路。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/156880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档