我的应用程序有四个应用程序服务器。应用程序正在使用负载平衡在所有服务器上工作。如果我的一个服务器出现故障,我必须使用我的系统主机文件手动检查它。为了避免这个手动过程,我创建了一个程序使用C#。我在主机文件中逐个写入服务器IP地址并删除前一个。
private void RunWithUAC()
{
List<string> lstIPAddress = new List<string>();
lstIPAddress.Add("1.1.1.1 example.com");
lstIPAddress.Add("1.1.1.1 example.com");
lstIPAddress.Add("1.1.1.1 example.com");
lstIPAddress.Add("1.1.1.1 example.com");
var systemPath = Environment.GetFolderPath(Environment.SpecialFolder.System);
Console.WriteLine(systemPath);
var path = @"C:\Windows\System32\drivers\etc\hosts";
foreach (var item in lstIPAddress)
{
System.IO.File.WriteAllText(path, string.Empty);
try
{
File.WriteAllText(path, item);
WebRequest request = WebRequest.Create("https://example.com");
request.Timeout = 10000;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
}
catch (Exception)
{
MessageBox.Show(item);
}
Thread.Sleep(1000);
}
}
但是当第二台服务器出现故障时。它会给我第三台服务器的超时错误。 请检查代码,让我知道此代码有什么问题。
答案 0 :(得分:1)
可能是某种连接池,HTTP流水线操作或保持活动状态。这首先是错误的做法。
直接连接到正确的IP(WebRequest.Create("https://1.1.1.1")
)。如果您需要发送Host
标题add that manually to the request。