我遇到了这个不太好的情况..当网络应用程序启动时 - 我为我的服务设置了不同的路由,以便我的多用户应用程序的租户连接到:
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
中引发异常时会发生什么?现在我没有诱捕它。
答案 0 :(得分:0)
不确定这是否是"修复"但是当我们遇到类似的依赖问题时,我们会确保其他依赖关系无法成功启动,并且#34;怪异的"模式。在这种情况下,如果sql server不可用,我会努力降低应用程序,至少在生产中是这样。没有任何东西被处理比处理错误的东西要好得多。