.NET-使用单个DNS查询从网站下载多个页面

.NET-使用单个DNS查询从网站下载多个页面,.net,http,dns,httprequest,resolve,.net,Http,Dns,Httprequest,Resolve,我正在使用HttpRequest从一个网站(在一个循环中)下载几个页面。将其简化如下所示: HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create( "http://sub.domain.com/something/" + someString ); HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); //do somethi

我正在使用HttpRequest从一个网站(在一个循环中)下载几个页面。将其简化如下所示:

HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(
            "http://sub.domain.com/something/" + someString
        );

HttpWebResponse resp = (HttpWebResponse)req.GetResponse();

//do something
实际上我不太确定,但每个请求似乎都再次解析了地址(我不知道如何测试我是否正确)我想对它稍加改进,一次解析地址,然后对所有请求重新使用它。不过,我不知道如何强制HttpRequest使用它

我尝试使用Dns.GetHostAddresses,将结果转换为字符串,并将其作为地址传递给HttpWebRequest.Create。不幸的是,服务器返回错误404。我设法用谷歌搜索,这可能是因为http查询的“主机”头与服务器期望的不匹配


有没有简单的方法来解决这个问题

老实说,我怀疑DNS还没有被缓存,但是有一种方法可以满足你的要求

使用IP地址创建请求后,将其属性设置为DNS名称。这将解决您的404问题


将属性设置为true可能有助于加快多个请求的速度。这将保持连接打开,并允许您发出多个请求,而无需每次重新建立连接。

老实说,我怀疑DNS是否已经被缓存,但有一种方法可以满足您的要求

使用IP地址创建请求后,将其属性设置为DNS名称。这将解决您的404问题


将属性设置为true可能有助于加快多个请求的速度。这将保持连接打开,并允许您在每次不必重新建立连接的情况下发出多个请求。

404肯定是因为该站点的“主机头”——数千个站点可以托管在一个IP地址上,web服务器使用域来确定您想要哪个站点


您的本地计算机应该缓存DNS查询的结果,因此,即使您每次访问域时它都会生成一个请求,该请求在第一次访问后甚至不会离开您的计算机,只使用本地缓存的查找结果。

404肯定是因为站点的“主机头”-一个IP地址可以承载数千个站点,web服务器使用域来确定您想要哪个站点


您的本地计算机应该缓存DNS查询的结果,因此,即使每次您访问域时它都会生成一个请求,该请求在第一次访问后甚至不会离开您的计算机,仅使用本地缓存的查找结果。

您如何知道它在第一个请求后未缓存在DNS中?您如何知道它在第一个请求后未缓存在DNS中?我已尝试设置标头,但它引发了无法直接设置的异常。嗯,这可能就是我要找的东西。问题是,我可以在创建HttpWebRequest对象后更改URI吗?或者,没关系,我知道我想知道什么。谢谢你们:)我试过设置标题,但它引发了一个无法直接设置的异常。嗯,这可能就是我要找的东西。问题是,我可以在创建HttpWebRequest对象后更改URI吗?或者,没关系,我知道我想知道什么。谢谢你们俩:)