我的WCF服务有一个名为ProductResponseMessage
的消息合约。
此邮件包含数据合约ProductResponse
,后者又包含许多数据成员。
其中一个数据合约是Person
,其中包含数据成员SocialSecurityNumber
。这是一个11位数字。此人物对象可能存在于其他数据合同中。
我的要求是我不应该一直向客户端显示11位数字。如果客户端有权查看完整的11位数(每个客户端配置为“是”),或者它应显示为填充x的最后6位数字。 (如54645XXXXXX)。
此SSN值来自数据库,我需要服务中的完整数字用于各种目的。
在WCF中这样做的正确方法是什么?我读过有关消息检查员的信息。
我需要使用它吗?或者还有其他方法吗?
答案 0 :(得分:1)
一个选项是:
这使您的服务最简单 - 它只是一直返回数据。
如果你想改变它,那么我认为你必须在调用它时向你的服务发送一些指示(例如,作为你请求中的[MessageHeader]
元素)告诉服务该做什么 - 返回整个11位数,只是它的一部分,或者根本没有。如果这样做,请处理服务代码(实现服务合同的代码)。
更新:好的,所以您想要做出决定的服务。在那种情况下,我可能会这样做:
DisplaySSN
或其他(字符串)DisplaySSN
可以是什么(完整的SSN,部分“用XXXX
涂黑”,什么都没有,并相应地设置该属性所以我肯定会立即在服务方面这样做 - 不要使用消息检查器处理它(可能存在或可能不存在......)