【问题标题】:When does WCF service call it's constructor?WCF 服务何时调用它的构造函数?
【发布时间】:2013-06-13 23:25:38
【问题描述】:

我有一个默认配置服务(我相信这是每个​​会话)。我对 WCF 初始化策略有点困惑。我已经阅读了很多关于不使用构造函数的建议,但就我而言,从每个会话更改为每个请求模式似乎很直观。

基本上,我在 HTTP 标头中传递了所有公共接口方法所需的信息,因此在执行的单个方法中解析它们是有意义的。再说一次,我一直希望实际上有更好的方法来做到这一点,因为我想使用每会话模型。

如何在实际方法之前执行此类标头解析代码?此外,假设我设法做到了 - 有没有办法在单一方法上禁用这种行为?

[编辑] 另外,说它在每个会话的基础上工作。我是否可以相信,当客户端再次调用相同的初始化时,它正在为相同的客户端提供服务(我假设这是每个会话的含义,但安全性在我的服务中很重要,所以我宁愿确定)。

【问题讨论】:

  • 您在 HTTP 标头中传递了什么样的信息?然后它是否用于一些自定义身份验证?如果是,您能否详细说明您选择这种方法的原因?
  • 我有一些与身份验证相关的东西。此外,应用程序版本在 User-Agent 变量中传递,我也想根据版本采取行动(即不要让旧版本的应用程序使用界面)

标签: wcf constructor behavior requirements


【解决方案1】:

实现 IClientMessageInspector 接口以在每次调用时发送您的自定义身份验证信息。然后实现 IDispatchMessageInspector 以验证服务端的标头。在这里你可以找到更多关于message inspectors in WCF的信息。

消息检查器还应该包含操作信息,以便您可以使用它来允许匿名访问某些服务方法。

即使您使用按会话实例模式,我个人也会在每次调用时验证安全数据。只要您的身份验证机制不需要太多时间,这对我来说似乎更容易实现和维护。

您是对的,会话使用相同的服务对象。

希望对你有帮助!

【讨论】:

    猜你喜欢
    • 2011-05-04
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 2011-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多