4

我有一个 ASP.Net 3.5 Web 应用程序 (C#),我需要在其中以编程方式检查我们的另一个站点(不是 ASP.Net)是否已启动并运行。目前,我有一个带有以下代码的方法,它检查 StatusCode 是否为 200。我遇到的问题是出现的 IIS7 启动页面返回的状态代码为 200,我在其中看不到任何其他内容允许我验证我们期望的页面实际显示的响应对象。我想避免返回响应并使用 StreamReader 只是为了在页面上查找 div 以验证它是否有效(如果可能),就像他们在链接中所做的那样(类似地)。

        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;
        }

任何帮助是极大的赞赏。

4

2 回答 2

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&amp;clcid=0x409""><img src=""welcome.png"" alt=""IIS7"" width=""571"" height=""411""></a>
</div>") {


}
于 2013-06-06T14:34:34.440 回答
0

调查其他应用程序返回的标头。与 IIS 初始屏幕相比,它很可能会出现一些额外的标题。例如,它可能指定Cache-Control. 如果您的响应没有该标题,则可以预期它是启动屏幕。

于 2013-06-06T14:33:58.843 回答