c# - 从 WCF 请求中删除 nill ="True"

标签 c# wcf

我在我的应用程序中使用 WCF web 服务,同时我正在发送一个请求,我正在使用 fiddler 监视请求和响应。问题是对于 null 标记,wcf 客户端生成 nil=true 属性。无论如何我可以将它们更改为空白标签吗? 这是例子

<a:Seats i:nil="true" />

这是Seat类的列表,它是可选标签,所以没有必要传递它。但是当我像上面那样发送请求时,我收到来自 Web 服务的 Object reference not set to an instance of an object 响应。我被要求从请求中删除 nill 属性。所以它必须变成这样

<a:Seats/>

添加 EmitDefaultValue=false 将完全删除标签,因此这不是答案。我怎样才能做到这一点 ?

最佳答案

如果我正确理解您的场景,您希望将“座位类列表”(例如 List<Seat> )表示为“空”而不是 null .

WCF 序列化程序将只允许对象序列化为“空”值,前提是该对象具有“有效”空值(例如 string 可以为空或 null)。 xsi:nil 指示元素在没有内容的情况下有效,即使该底层对象的数据类型不允许空元素。

如果您想强制您的 WCF 客户端发送空元素,您可以实现自定义消息检查器以在发送之前修改消息。

引用 How to inspect and modify WCF message via custom MessageInspector 了解更多信息。

关于c# - 从 WCF 请求中删除 nill ="True",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29118057/

相关文章:

c# - 使用 JSON.NET 反序列化 Noda Time 的 LocalDateTime

c# - 如何在不重启的情况下生成服务模型元数据

c# - Web Api 用户过滤响应字段

wcf - 为什么使用 NetMessagingBinding 监听 Azure 服务总线队列的服务可能会停止接收消息?

javascript - 从网站转换为Web应用程序项目后未定义wcf服务

需要将消息推送到客户端的 WCF 服务

c# - WCF 真的会取代.NET Remoting 吗?

c# - 如何将创建的用户声明传递给客户端

c# - 检查列表是否包含两个不同派生类型的元素

c# - 在控制台应用程序中等待异步操作后,WCF 客户端挂起任何操作