C# DataTables控制器从多个源获取数据,如何处理其中一个不可用的源

C# DataTables控制器从多个源获取数据,如何处理其中一个不可用的源,c#,model-view-controller,datatables,C#,Model View Controller,Datatables,数据表列出了当前在四个独立服务器上运行的所有系统。有时,由于各种原因,其中一台或多台服务器不可用。但是,在填充此数据表时,如果其中一台服务器关闭或无法访问源,则该表将无法填充并引发异常 我删掉了下面一些多余的代码,只包括看起来很重要的try/catch块 public async Task<HttpResponseMessage> GetSystemList(DataTableAjaxPostModel model) { try { v

数据表列出了当前在四个独立服务器上运行的所有系统。有时,由于各种原因,其中一台或多台服务器不可用。但是,在填充此数据表时,如果其中一台服务器关闭或无法访问源,则该表将无法填充并引发异常

我删掉了下面一些多余的代码,只包括看起来很重要的try/catch块

public async Task<HttpResponseMessage> GetSystemList(DataTableAjaxPostModel model)
{
    try
        {
            var result = (await Api.GetSystems("NetworkOne")).Select(w => new SystemModel(w, db)).Select(tr => new SystemListDisplay
            {
                SystemName = tr.SystemName,
                SystemGid = tr.GuardianId,
                SystemGroup = db.Groups.Find(tr.GroupId)?GroupName ?? "Unknown",
                Server = "NetworkOne"
            }).ToArray();

            Array.Resize(ref result, result.Length + dresult.Length);
            int i = 1;
            foreach (var system in dresult)
            {
                result[result.Length - i] = system;
                i++;
            }
      }
      catch (Exception ex)
      {
           using (var logger = new GrayLogUdpClient())
           {
                 logger.Send(ex);
           }
      }
}
对每个服务器重复此try/catch块

这个项目比我早了一点,所以我尝试把它拼凑起来,因为它是一个更大的MVC项目的一部分。在某一点上,只有一台服务器,并且随着后续服务器的添加,try/catch块被简单地复制

问题似乎在于,从服务器检索给定系统列表的任务会无限期地运行,就像在故障排除时在Chrome中检查开发人员控制台一样

internal static async Task<Network[]> GetSystems(string server, bool expandNodes = true)
        {
            Network[] Networks = await GetValueOrNull<Network[]>($"{server}/network/find/device/%25?expandNodes={expandNodes}&array=true", true);

            return Networks;
        }

这是一个API调用,如果服务器关闭或不可用,它似乎会无限期地暂停。如果无法访问服务器,是否可以启动一个将继续到下一个try/catch块的超时?

问题似乎是从服务器检索给定系统列表的任务无限期运行-因此听起来真正的问题似乎是API调用API.GetSystems正在暂停?我将进行编辑以将API调用包括在我的任务中原来的问题。谢谢。好的,谢谢。但是再次告诉我,如果我错了,听起来实际的问题是API调用需要很长时间才能完成。对吗?您能否在Postman中测试API调用,看看它在代码之外是否正常工作?您可能需要延长连接时间。许多人都有找不到服务器的问题,增加连接时间似乎可以解决问题。问题似乎是从服务器检索给定系统列表的任务无限期运行-因此听起来真正的问题似乎是API调用API。GetSystems正在暂停?我将编辑以将API调用包括在原始问题中。谢谢。好的,谢谢。但是再次告诉我,如果我错了,听起来实际的问题是API调用需要很长时间才能完成。对吗?您能否在Postman中测试API调用,看看它在代码之外是否正常工作?您可能需要延长连接时间。很多人都有找不到服务器的问题,增加连接时间似乎可以解决问题。