【问题标题】:Proper place for initialization code in non-HTTP WCF service hosted in IIS/WAS?在 IIS/WAS 中托管的非 HTTP WCF 服务中初始化代码的正确位置?
【发布时间】:2012-02-03 00:24:50
【问题描述】:

据我了解,为 net.msmq 配置的 WCF 服务在 IIS/WAS 中托管时不会作为 HttpApplication 运行,这意味着您不会在 Global 中获得事件(Application_Start 是重要的事件)。我在这方面是正确的吗?

使用 Windows Server AppFabric 自动启动服务是否会通过 HTTP 访问服务,导致 Application_Start 事件触发?如果有,这可靠吗?

我想我的真正问题是,非 HTTP WCF 服务的初始化代码的“正确”位置在哪里?

特别是(因为对于不同的东西,正确的地方可能会有所不同):

  • IoC 注册
  • log4net 初始化
  • 验证本地是否存在 MSMQ 队列(正如 Juval Lowy 在他的 WCF 书中所建议的那样)

后续问题:自定义 IServiceBehavior 中的事件是在每次请求时触发还是仅在启动时触发一次? ServiceHost.OnOpening() 怎么样 - 每个请求或仅在启动时一次? (我的测试显示它只有一次,但有谁知道 WCF“生命周期”记录在哪里,因为我似乎无法在任何地方找到它。)

【问题讨论】:

    标签: wcf msmq netmsmqbinding msmq-wcf


    【解决方案1】:

    我无法验证托管在 IIS/WAS 中的 WCF 服务是否无法配置为支持 Application_Start,但它不需要执行您想要的操作。我建议您结合自定义 ServiceHostFactory(用于 WAS)创建自定义 ServiceHost。这种方法记录在MSDN articlethis blog post 中。使用这种方法,您可以将服务托管在 IIS/WAS、Windows 服务或控制台应用程序中,因为初始化过程是相同的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-11
      • 2022-01-25
      • 2015-12-24
      • 1970-01-01
      相关资源
      最近更新 更多