3

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

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

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

特别是(因为不同的东西的正确位置可能不同):

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

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

4

1 回答 1

1

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

于 2012-02-03T19:05:38.377 回答