如何在Web服务中使用HttpWebRequest检测受信任的站点?

时间:2013-01-29 02:16:40

标签: c# web-services httpwebrequest http-status-code-404

  

我在C#中有一个2.0框架的控制台应用程序,使用vs   这很奇怪,我在我的电脑和服务器上使用的代码完全相同(使用webservice)。

     

当我在URL上执行HttpWebRequest.GetResponse时,第一个(pc)   效果很好,但最后一个(webservice)返回错误:

(404) Not Found. The URL is a trusted site. 
Internet sites and local intranet sites are detected successfully. 
But trusted sites only could not be detected. 
     

我不知道为什么?

     

这是代码:

private bool getSiteConnStatus(string url)
{
  bool result = true;
  Uri uri = new Uri(url);
  try
  {
      HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);          
      WebProxy SCProxy = new WebProxy("123.123.123.123");          
      SCProxy.Credentials = new NetworkCredential();                
      request.Proxy = SCProxy;          

      HttpWebResponse response = (HttpWebResponse)request.GetResponse();
      if (response == null || response.StatusCode != HttpStatusCode.OK)
      {
          result = false;
      }
      response.Close();
  }
  catch (Exception ex)
  {
      result = false;
  }
  return result;
}

~~~~~~~~~~

我已经解决了。

每当调用每个站点时,代理信息都会更改。所以我在下面添加了一些代码。  Reference site

 private bool getSiteConnStatus(string url)
    {
        bool result = true;
        Uri uri = new Uri(url);
        try
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
            ***WebProxy SCProxy;
            if (request.Address.Host == "test.net")
            {
                SCProxy = new WebProxy("111.111.111.111", 8080);
            }
            else
            {
                SCProxy = new WebProxy("123.123.123.123", true);
            }
            request.Proxy = SCProxy;***

            HttpWebResponse response = (HttpWebResponse)request.GetResponse();

            if (response == null || response.StatusCode != HttpStatusCode.OK)
            {
                result = false;
            }
            response.Close();
        }
        catch (Exception ex)
        {
            result = false;
        }
        return result;
    }

1 个答案:

答案 0 :(得分:0)

尝试从浏览器访问您的网址(在服务器上) - 如果可行,您的浏览器代理会配置为与指定端口之间进行通信或从外部世界进行通信。

检查您的防火墙策略以及他们阻止与外部世界建立连接的任何特定用户代理字符串?

如果您从浏览器中尝试,请验证您的代理身份验证(我在此处假设其IE)。浏览器可能会自动提供它/ NTLM身份验证字符串。你的程序可能无法在哪里?