WCF - 修改响应消息

时间:2012-01-18 11:40:24

标签: wcf

我的WCF服务有一个名为ProductResponseMessage的消息合约。

此邮件包含数据合约ProductResponse,后者又包含许多数据成员。

其中一个数据合约是Person,其中包含数据成员SocialSecurityNumber。这是一个11位数字。此人物对象可能存在于其他数据合同中。

我的要求是我不应该一直向客户端显示11位数字。如果客户端有权查看完整的11位数(每个客户端配置为“是”),或者它应显示为填充x的最后6位数字。 (如54645XXXXXX)。

此SSN值来自数据库,我需要服务中的完整数字用于各种目的。

在WCF中这样做的正确方法是什么?我读过有关消息检查员的信息。

我需要使用它吗?或者还有其他方法吗?

1 个答案:

答案 0 :(得分:1)

一个选项是:

  • 您的WCF服务无关紧要 - 它始终返回完整的11位数字
  • 您的前端(网站,Winforms应用程序 - 您拥有的任何内容)处理显示或取消SSN号码

这使您的服务最简单 - 它只是一直返回数据。

如果你想改变它,那么我认为你必须在调用它时向你的服务发送一些指示(例如,作为你请求中的[MessageHeader]元素)告诉服务该做什么 - 返回整个11位数,只是它的一部分,或者根本没有。如果这样做,请处理服务代码(实现服务合同的代码)。

更新:好的,所以您想要做出决定的服务。在那种情况下,我可能会这样做:

  • 在我的服务中将完整的SSN检索到私有变量中 - 你说你需要为各种事情提供完整的SSN
  • 有一个名为DisplaySSN或其他(字符串)
  • 的属性
  • 根据随请求传入的用户名,确定DisplaySSN可以是什么(完整的SSN,部分“用XXXX涂黑”,什么都没有,并相应地设置该属性

所以我肯定会立即在服务方面这样做 - 不要使用消息检查器处理它(可能存在或可能不存在......)