以编程方式重新启动IIS托管WCF服务 - 更改绑定问题

时间:2011-12-09 16:41:17

标签: c# wcf iis wcf-binding

我遇到了这个不太好的情况..当网络应用程序启动时 - 我为我的服务设置了不同的路由,以便我的多用户应用程序的租户连接到:

private static void RegisterRoutes()
{
   // Setup URL's for each customer
   using (var cmc = new CoreModelContext())
   {
      foreach (var account in cmc.Accounts.Where(aa => aa.IsActive).ToList())
      {
         RouteTable.Routes.Add(
              new ServiceRoute(account.AccountId + "/mobile", 
                               new MyServiceHostFactory(), typeof(MobileService)));
      }
   }
}

因此,当我的网站/服务启动时 - 它会从数据库中抓取所有帐户并设置路由。

这是一个单一的失败点。有时服务器以错误的顺序重新启动,如果SQL Server没有启动 - 此服务以“怪异”模式启动。

今天,网络服务停止响应。我检查了日志 - IIS循环池按计划(默认设置)并启动了不同的工作流程。有些东西没有点击和繁荣 - 服务器停止响应。路线没有登记......

因此。我的问题是..如何解决它最好的方法?我可以将路由放到配置文件中,但这意味着我必须在两个地方维护这些ID。可能不是那么糟糕,但如果可能的话,我宁愿做不同的事情。

是否可以以编程方式尝试并重新启动池? Application_Start中引发异常时会发生什么?现在我没有诱捕它。

1 个答案:

答案 0 :(得分:0)

不确定这是否是"修复"但是当我们遇到类似的依赖问题时,我们会确保其他依赖关系无法成功启动,并且#34;怪异的"模式。在这种情况下,如果sql server不可用,我会努力降低应用程序,至少在生产中是这样。没有任何东西被处理比处理错误的东西要好得多。