C# 按IP地址访问网站

C# 按IP地址访问网站,c#,dotnet-httpclient,C#,Dotnet Httpclient,我试图通过ip地址而不是http地址访问网站。我正在尝试一些众所周知的网站,如微软和谷歌,并通过ping获取它们的ip地址。例如,184.87.106.199是微软,216.58.221.68是谷歌 async Task<HttpStatusCode> RequestPage(string url, HttpClient client) { var request = new HttpRequestMessage(); try {

我试图通过ip地址而不是http地址访问网站。我正在尝试一些众所周知的网站,如微软和谷歌,并通过ping获取它们的ip地址。例如,184.87.106.199是微软,216.58.221.68是谷歌

    async Task<HttpStatusCode> RequestPage(string url, HttpClient client) {
        var request = new HttpRequestMessage();

        try {
            var response = await client.GetAsync("http://" + url);

            Console.WriteLine(string.Format("{0} - {1}", url, response.StatusCode.ToString()));

            return response.StatusCode;
        } catch (TaskCanceledException) {
            Console.WriteLine(string.Format("{0} - Timeout", url));

            return HttpStatusCode.GatewayTimeout;
        }
    }
异步任务请求页面(字符串url,HttpClient客户端){
var request=new-HttpRequestMessage();
试一试{
var response=await client.GetAsync(“http://”+url);
WriteLine(string.Format(“{0}-{1}”,url,response.StatusCode.ToString());
返回response.StatusCode;
}捕获(TaskCanceledException){
WriteLine(string.Format(“{0}-Timeout”,url));
返回HttpStatusCode.GatewayTimeout;
}
}
然而,它似乎并不适用于每个站点。如果我请求,谷歌可以正常工作,但微软返回了一个错误的请求状态


我遗漏了什么?

基于IP地址,您无法可靠地访问网站。通常,服务器配置为在单个IP地址上承载多个网站,并根据URL为正确的网站提供服务。

当您使用浏览器向网站发出HTTP请求时,浏览器本身将查找IP地址,然后连接。但是,您的浏览器将发送如下内容:

GET http://stackoverflow.com/ HTTP/1.1
Host: stackoverflow.com
这意味着远程端知道将您发送到哪个网站,因为服务器可能承载许多站点,特别是在共享托管环境中


此外,更为复杂的是,有些网站会有多个IP地址。

好吧,第一个IP地址在浏览器中也不起作用,所以我想可能是地址问题。