我正在尝试将用户信息从控制器传递到服务层。
IClientMessageInspectors
并且IDispatchMessageInspectors
似乎是最有可能的解决方案。
在完成了构建 HTTP 用户代理消息检查器 和 编写 WCF 消息检查器之后,我对如何将信息添加到消息头以及如何读取它有了一个很好的了解。
我想不通的是:
如何获取用户信息
IClientMessageInspector
?在我曾经起诉过的控制器内部
User.Identity.Name
。但 User 对象在消息检查器中不可用。在消息检查器中获取此信息的一种方法是将其传递到构造函数中,但我从未显式创建 MessageInspector 对象,因此如何在其构造函数中传递用户信息。编辑:我找到了第一个问题的答案。用户信息可以通过 System.Threading.Thread.CurrentPrincipal.Identity.Name 获取。仍然坚持第二部分。
如何在服务方法中提供用户信息?
我可以浏览标头并从 DispatchMessageInspector 中的消息标头中获取用户信息,但是如何在我的操作合同中提供这些信息?