我需要检查给定主机是否正在回复 HTTP Web 请求。所以,我需要做的就是 HttpWebRequest.Create(someURI) 并检查响应,对吧?
HttpWebRequest webRequest = (HttpWebRequest)HttpWebRequest.Create(targetUri);
TimeSpan timeOut = TimeSpan.FromSeconds(timeOutInSeconds);
webRequest.Timeout = (int)timeOut.TotalMilliseconds;
webRequest.Proxy = proxy;
webRequest.AllowAutoRedirect = false; // get extra information with this turned off, but doesn't affect the problem
response = webRequest.GetResponse() as HttpWebResponse;
好吧,出现的问题是,如果 someURI 被我们的防火墙阻止(例如“gibber.com”被阻止),那么我会返回一个有效的 HttpWebResponse,它不会抛出,并且 ResponseURI 属性设置为被阻止URI(“gibber.com”)即使它实际上是我们的服务器响应。
在 HTTP 标头中会有一个 Location 键,它的值是本地服务器的 IP。但是我不想解析文本来确定请求是否真的被退回。这样做的正确方法是什么?
谢谢