【发布时间】:2020-01-30 18:01:59
【问题描述】:
我使用 ForEach 循环从 3 个不同的 URL 返回状态代码以遍历结果。它返回结果很好,但返回 3 组结果。
public static List<Models.SiteStatus> GetStatus()
{
statusList.Clear();
// website urls to check
string site1 = "https://www.google.com";
string site2 = "https://www.google.com";
string site3 = "https://www.google.com";
int site1Status = 0;
int site2Status = 0;
int site3Status = 0;
HttpStatusCode result = default;
HttpWebResponse response = null;
// add urls to a list to pass through
List<Uri> urls = new List<Uri>();
urls.Add(new Uri(site1));
urls.Add(new Uri(site2));
urls.Add(new Uri(site3));
// check status per site
foreach (Uri u in urls)
{
try
{
HttpWebRequest request = WebRequest.Create(u) as HttpWebRequest;
// just request headers
request.Method = "HEAD";
response = request.GetResponse() as HttpWebResponse;
result = response.StatusCode;
// 15 second timeout
request.Timeout = 15000;
}
catch (Exception)
{
throw;
}
finally
{
if (response != null)
{
if (response.ResponseUri.AbsoluteUri == site1 && response.StatusCode == result)
{
site1Status = (int)response.StatusCode;
}
if (response.ResponseUri.AbsoluteUri == site2 && response.StatusCode == result)
{
site2Status = (int)response.StatusCode;
}
if (response.ResponseUri.AbsoluteUri == site3 && response.StatusCode == result)
{
site3Status = (int)response.StatusCode;
}
var res = new SiteStatus
{
url1Site = site1,
url1Status = site1Status,
url2Site = site2,
url2Status = site2Status,
url3Site = site3,
url3Status = site3Status
};
statusList.Add(res);
}
else
{
}
}
// close connection
response.Close();
}
return statusList;
}
返回的结果是这样的;
- 站点 1 = 200
- 站点 2 = 0
- 站点 3 = 0
- 站点 1 = 200
- 站点 2 = 200
- 站点 3 = 0
- 站点 1 = 200
- 站点 2 = 200
- 站点 3 = 200
我只需要前端 html 中返回的最后一组结果,但似乎无法弄清楚。非常感谢任何帮助。
【问题讨论】:
-
您每次在 foreach 循环周围都会创建一组新结果。将
new SiteStatus行移出循环