我有一个ASP.Net 3.5 Web应用程序(C#),我需要以编程方式检查我们的另一个站点(不是ASP.Net)是否启动并运行。目前,我有一个方法,使用以下代码检查StatusCode为200.我遇到的问题是,出现的IIS7启动页面返回状态代码200,我没有看到任何其他内容响应对象,允许我验证我们期望实际显示的页面。我想避免得到回复并使用StreamReader只是在页面上查找div以验证它是否有效(如果可能),就像它们(类似地)在this链接中一样。
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urlToCheck);
request.AllowAutoRedirect = true;
HttpWebResponse response;
try
{
response = (HttpWebResponse)request.GetResponse();
if (response.StatusCode == HttpStatusCode.OK)
{
return true;
}
return false;
}
catch (Exception)
{
return false;
}
非常感谢任何帮助。
答案 0 :(得分:5)
只需阅读它已经存在的Response
并等待!
Stream s = response.GetResponseStream();
StreamReader r = new StreamReader(s);
string html = r.ReadToEnd();
// IIS7
if(html.Contains(@"<div id=""container"">
<a href=""http://go.microsoft.com/fwlink/?linkid=66138&clcid=0x409""><img src=""welcome.png"" alt=""IIS7"" width=""571"" height=""411""></a>
</div>") {
}
答案 1 :(得分:0)
调查其他应用程序返回的标头。与IIS启动画面相比,它最有可能会有一些额外的标题。例如,它可能指定Cache-Control
。如果您的回复没有该标题,则可以预期它会成为启动画面。