NET:在不使用IP地址的情况下检查URL的响应状态代码

时间:2011-02-01 14:27:21

标签: asp.net httpwebrequest

我想检查网址的状态代码,而不使用IP地址,因为我有很多网站配置了相同的IP,只有主机名不同。 HttpWebRequest解析IP地址并使用它。

有替代方案吗?

2 个答案:

答案 0 :(得分:2)

MSDN上列出的HttpWebRequest类的示例代码中:

HttpWebRequest myReq =
    (HttpWebRequest)WebRequest.Create("http://www.contoso.com/");

不需要IP。

修改
作为测试,我把它扔进了一个扔掉的应用程序:

HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create("http://domain1.mylocalhost.com/");

HttpWebRequest myReq2 = (HttpWebRequest)WebRequest.Create("http://domain2.mylocalhost.com/");

WebResponse myReqResponse = myReq.GetResponse();
WebResponse myReq2Response = myReq2.GetResponse();

long x = myReqResponse.ContentLength;
long y = myReq2Response.ContentLength;

MessageBox.Show((x == y).ToString());

我让domain1指向一个有效的网站。我有domain2指向一个为所有请求传递错误500的站点。两者都在同一个IP上。上面的代码为myReqResponse生成内容长度17320,myReq2Response抛出异常,提供错误500. IP地址不是必需的,幕后的分辨率不会影响其行为。

答案 1 :(得分:0)

之前我已经建立了一个带有主机标题名称的网站。顾名思义,它是标题(来自客户端)导致它转到服务器上的正确站点。如果未提供标头,则服务器将不会路由到正确的站点。

您是否尝试将主机标头添加到请求的标头集合中?

Dim req As System.Net.HttpWebRequest = DirectCast(System.Net.WebRequest.Create("http://www.whatever.com/"), System.Net.HttpWebRequest)
req.Headers.Add("Host", "www.whatever.com")

您可以使用http://web-sniffer.net/来确定您可能需要传递哪些其他标头才能使其正常工作。