我有一个默认配置服务(我相信这是每个会话)。我对WCF初始化策略略感困惑。我已经阅读了许多关于不使用构造函数的建议,但就我而言,似乎直观的做法是从每个会话更改为每个请求模式。
基本上我在所有公共接口方法中都需要在HTTP头中传递信息,因此在一个执行的方法中解析它们是有意义的。然后,我一直希望有更好的方法来实现这一点,因为我想使用每会话模型。
如何在实际方法之前执行此类头解析代码?此外,假设我设法做到了 - 有没有办法在单个方法上禁用这种行为?
[edit]另外,假设它适用于每个会话。我是否可以相信,当客户端再次调用时,同一个初始化服务于同一个客户端(我假设这是每个会话的意思,但安全性在我的服务中很重要,所以我宁愿确定)。
答案 0 :(得分:2)
实施IClientMessageInspector接口,以便在每次调用时发送自定义身份验证信息。然后实现IDispatchMessageInspector以验证服务端的标头。您可以在此处找到有关message inspectors in WCF的更多信息。
消息检查员还应包含操作信息,以便您可以使用它来允许匿名访问某些服务方法。
就我个人而言,即使您使用每会话实例模式,我也会验证每次调用的安全数据。这对我来说似乎更具反弹性,因为只要您的身份验证机制不需要花费太多时间,它就更容易实现和维护。
你是对的,同一个服务对象用于会话。
希望它有所帮助!