C# HttpWebRequest。创建和安装防火墙

C# HttpWebRequest。创建和安装防火墙,c#,httpwebrequest,httpwebresponse,system.net,C#,Httpwebrequest,Httpwebresponse,System.net,我需要检查给定的主机是否正在响应HTTP web请求。 所以,我需要做的就是HttpWebRequest.Create(someURI)并检查响应,对吗 HttpWebRequest webRequest = (HttpWebRequest)HttpWebRequest.Create(targetUri); TimeSpan timeOut = TimeSpan.FromSeconds(timeOutInSeconds); webRequest.Timeout = (int)timeOut.T

我需要检查给定的主机是否正在响应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;
好的,出现的问题是,如果某个URI被我们的防火墙阻止(例如“gibber.com”被阻止),那么我会得到一个有效的HttpWebResponse,它不会抛出,并且ResponseURI属性被设置为阻止的URI(“gibber.com”),即使它实际上是我们的服务器响应

在HTTP头中会有一个位置键,其值是本地服务器的IP。但我不想解析文本来判断请求是否真的被拒绝了。正确的方法是什么


谢谢

检查response.ResponseUri是否对应于给定的主机或防火墙。

为什么不解析文本?解析文本很简单,但似乎不是很可靠。它只输出n个头,其中一个恰好包含服务器的IP。如果我知道对于被阻止的URL总是有一个位置头,并且它总是服务器/网关的地址,那就太好了。但是我不知道.response.ResponseUri是被阻止的URL。在这一点上,我不得不谦恭一点,因为我假设ResponseUri错误地返回了所需的主机,而实际上它被阻止了。事实上,这个特定的主机并没有被阻止传出,只是根据传入时的内容,所以这里的ResponseURI实际上是准确的。