2011-02-01 40 views
2

我想检查网址的状态代码而不使用IP地址,因为我有很多配置了相同IP的网站,并且只有主机名对他们不同。 HttpWebRequest解析IP地址并使用它。NET:在不使用IP地址的情况下检查URL的响应状态代码

是否有替代方案?

+0

你想达到什么目的? – 2011-02-01 14:31:37

+3

如果没有或解析IP地址,则无法通过TCP/IP进行通信。我有充分的理由相信HttpWebRequest类的行为正确,解析IP地址,并使用Host头来指示它尝试与之通信的“主机名”。那么,你遇到什么样的实际问题会导致你相信它被破坏了? – 2011-02-01 14:41:53

回答

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地址不是必需的,幕后的解析不会影响其行为。

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/,以确定您可能需要通过得到这个工作有什么其他头。

相关问题