WCF服务,根据返回值更改HttpStatusCode

时间:2011-07-07 11:19:57

标签: wcf rest

我有一个公开两个端点的WCF服务。一个WebHttpBinding(充当移动客户端的REST服务)和一个NetTcpBinding(用于桌面.NET客户端)

假设客户端访问服务方法GetData。如果没有数据,我将返回'null'(或false或'0',具体取决于所调用的内容)。如果客户端是访问WebHttpBinding - 端点的移动客户端,我想将HttpStatusCode更改为OK以外的其他内容。

有没有办法做到这一点,仍然保持我的服务实现一般(不在那里放任何特定于http的代码)?我知道我可以使用IDispatchMessageInspector拦截消息并更改状态代码,并且仅对WebHttpBinding - 端点执行此操作,但后来我真的不知道要将状态代码更改为...

有没有人建议如何解决这个问题?

更新

我开始认为真的没有办法以一种很好的方式做到这一点,因为我真正知道在服务实现中出错的唯一地方。

1 个答案:

答案 0 :(得分:1)

编辑:好方法:关注点分离(SoC)。 REST实现仅将REST问题添加到服务中,并继承执行整个业务逻辑的基本实现。