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

本文关键字:绑定 问题 服务 WCF 方式 编程 重新启动 IIS 托管 | 更新日期: 2023-09-27 18:17:34

我陷入了这种不太好的境地。当web应用程序启动时-我为我的服务设置了不同的路由,以便我的多用户应用程序的租户连接到:

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没有启动-此服务启动在"怪异"模式。

今天web服务停止响应。我按计划检查了日志- IIS回收池(默认设置),并启动了不同的工作进程。有些东西没有点击,服务器停止响应。路由未注册…

。我的问题是……如何最好地解决这个问题?我可以把路由配置文件,但这将意味着我必须在2个地方维护这些id。可能没那么糟,但如果可能的话,我宁愿换个方式。

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

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

不确定这是否是一个"修复",但是当我们有类似的依赖问题时,我们确保其他依赖不能在"weird"模式下成功启动。在这种情况下,如果sql server不可用,至少在生产中,我将使应用程序关闭。什么都不处理比处理错误要好得多。