0
我正在使用System.Net.Http.HttpClient
与后端MVC4应用程序中的RESTful服务交谈。根据提出请求的用户,身份验证标头与RESTful服务的通信会有所不同,因此应该为每个用户缓存标头中设置的值。这些值在会话的整个生命周期中可能会更改。.NET MVC HttpClient生命周期
我正在使用StructureMap for DI。有些问题:
- 根据this听起来应该有HttpClient的的所有请求的单个实例。虽然some say直接注入HttpClient可能是一个坏主意,因为它是IDisposabe,others say它没有必要处置它。那么,注入HttpClient的最佳方法是什么?
- HttpClient的单个实例可能会在运行期间被丢弃或失效(可能是REST服务器重新启动)?如果是这样,那么我认为没有选择直接注入HttpClient,它必须包装在一个管理器类中,该类将检查HttClient实例是否有效,并在出现问题时实例化新客户端。问题是我没有看到一种方式进行测试。
- 哪里是缓存用户特定认证头信息的最佳位置?我不认为从控制器传递信息到服务层是干净的,因为它似乎是suggested here,所以我认为HttpSession在数据层中的注入对象范围是这里的方式,但是会爱上听取其他想法。
你究竟如何创建/注入单身HttpClient - 裸体或与一些经理/包装?关于设置auth头文件,我正在询问在构建头文件值时将用于存储/缓存用户信息的位置。在我的情况下,它是授权标题,但可以应用于每个用户在每个请求上需要提交的任何内容。 – Alex
我想我需要澄清的是,传递给标题的用户信息将在每个新会话开始时确定。我会更新我原来的问题。 – Alex
@Alex我会尝试使用HttpClient裸体。包装HttpClient可能会很痛苦。 –