WCF数据服务-在返回结果之前修改对象?我正在使用WCF数据服务,并且我有一些字段/属性在发送回客户端之前想要“空白”(将值设置为空字符串或null)。例如:用户表有密码列,我不想将值传递给客户端。这是一个示例,应用程序中还有其他此类列,出于安全/隐私原因,应排除该值。对于这样一个基本问题,我很抱歉,我是WCF数据服务的新手,还没有找到任何有希望的线索。我尝试了QueryInterceptors但没有成功。有人能指出我正确的方向吗?感谢IMO,这超出了WCF数据服务的范围。WCF数据服务旨在采用您的实体模型并根据访问规则公开它。如果你的实体暴露了某些属性,而实体暴露了,那么它的属性只是公开的。适用于简单的CRUD场景或者只读场景。QueryInterceptor不会帮助你,因为它可以用于数据驱动的授权-这意味着QueryInterceptor可以添加一些额外的条件来过滤当前用户不允许看到的记录=它会过滤掉整个记录,但不会修改过滤结果。没有进入空白字段的钩子,因为这是一种糟糕的方法。如果您不想公开某些字段,则它们根本不应该是公开实体的一部分。您可以使用EDMX文件中的QueryView创建第二个只显示公共字段的只读实体。接下来,您需要修改DataServiceConfiguration访问规则。您必须删除对初始用户实体集的访问规则,并将读取访问规则添加到该新实体集。如果您需要控制每个用户的访问规则,您必须在您的服务中使用某种身份验证,并且您必须在InitializeService方法中处理它(除非DataServiceConfiguration在其他地方可用)。类似于:publicstaticvoidInitializeService(DataServiceConfigurationconfig){varcontext=ServiceSecurityContext.Current;if(context!=null&&context.PrimaryIdentity!=null){varuserName=context.PrimaryIdentity.Name;if(SomeMethodToValidateUserPermissions(userName){config.SetEntitySetAccessRule("Users",EntitySetRights.AllRead);}}config.SetEntitySetAccessRule("TrimmedUsers",EntitySetRights.AllRead);}通过深入研究WCF,还有其他方法可以限制对一定的资源,但是这个方法是最简单的。以上是C#学习教程:WCFDataservice-Modifytheobjectbeforereturntheresult?所有内容分享,如果对大家有用还需要详细了解C#学习教程,希望大家多多关注——本文来自网络收藏,不代表立场,如涉及侵权,请点击右边联系管理员删除,转载请注明出处:
