0

我有几个 wcf 服务将在启动时调用注册服务(通过自定义 ServiceHostFactory)。所有这些服务(包括注册服务)都在同一个应用程序池中运行。我安装了 appfabric 来自动启动所有服务。我不会解释所有的详细设置(因为我认为还没有必要),但简而言之,服务使用 net.tcp 绑定并且在 Windows 7 上的 IIS 7.5 中运行。

问题:当我将所有服务设置为自动启动时,它将从一个(随机)服务开始,该服务尝试连接到注册服务。但不知何故,这个注册服务不会启动。看起来它想按顺序启动所有服务。

(不想要的)解决方案1:当我将注册服务放在它自己的应用程序池中时,一切正常,所有服务在几秒钟内上线并自行注册。

(不想要的)解决方案 2:当我禁用自动启动并尝试在 iisreset 后访问其中一项服务时,一切正常。该服务将尝试注册自己,然后注册服务将启动。

我是 appfabric 的新手,所以可能是一些简单的配置问题。奇怪的是,它在自动启动时不起作用,但在手动启动时似乎可以正常工作。

有任何想法吗?

4

1 回答 1

1

AppFabric 自动启动功能没有优先级。您不能假设一项服务总是在其他服务之前启动。此外,您不能假设它们会同时启动。

针对具体场景,推荐使用WCF 4.0 Discovery and Announcement。公告功能使服务能够宣布其可用性(通过发送 Hello 和 Bye 公告),而发现功能允许客户端在运行时发现服务地址。

您的所有服务都在同一台服务器上?可能与使用 namedPipeBinding 相关。

于 2013-07-09T11:51:19.100 回答