2010-06-28 68 views
0

我有以下代碼繞過本地計算機的代理服務器,然後發送WebRequest。WebRequest從另一個IP生成而不是我的系統IP?

   System.Net.HttpWebRequest Request; 
       System.Net.WebResponse Response; 
       System.Net.CredentialCache MyCredentialCache; 

編輯1

//System.Net.WebProxy proxyObject = new WebProxy("http://172.24.1.87:8080",true); 

      string strRootURI = "http://172.24.18.240/webdav/"; 
      string strUserName = "UsName"; 
      string strPassword = "Pwd"; 
      // string strDomain = "Domain"; 
      string strQuery = ""; 
      byte[] bytes = null; 
      System.IO.Stream RequestStream = null; 
      System.IO.Stream ResponseStream = null; 
      System.Xml.XmlTextReader XmlReader = null; 

      try 
      { 
       // Build the SQL query. 
       strQuery = "myWebDavVerb"; 

       // Create a new CredentialCache object and fill it with the network 
       // credentials required to access the server. 
       MyCredentialCache = new System.Net.CredentialCache(); 
       MyCredentialCache.Add(new System.Uri(strRootURI), "Basic", new System.Net.NetworkCredential(strUserName, strPassword));//, strDomain) 


       // Create the HttpWebRequest object. 
       Request = (System.Net.HttpWebRequest)HttpWebRequest.Create(strRootURI); 


       // Add the network credentials to the request. 
       Request.Credentials = MyCredentialCache; 

         // Request.Proxy = proxyObject; 
        // Specify the method. 
        Request.Method = "PROPFIND"; 
    } 

現在,當我嘗試執行我得到403錯誤。所以我檢查了服務器日誌,發現HTTP/1.0請求來自IP 172.24.1.87,而我的IP是172.24.17.220

有沒有辦法避免這種情況?我認爲這是403錯誤的根本原因。

請幫忙。 謝謝,

Subhen

回答

2

該IP地址是你的代理服務器的地址...和你設置代理服務器的網絡請求是代理。

你爲什麼期望它不使用代理?

注意,你繞過請求本地機器,從本地機器不,如果這是你的困惑點。

編輯:如果你真的想知道發生了什麼,抓住Wireshark這將讓你看到所有來自你的機器的數據包。

如果要指定「不使用代理」,那麼這樣做:

request.Proxy = GlobalProxySelection.GetEmptyWebProxy(); 
+0

我已刪除了代理SETT默認代理的代理從我的代碼現在,但現在的請求來自172.24.1.86 – Simsons 2010-06-28 11:56:31

+0

@Subhen:這可能是你的網絡的默認代理? – 2010-06-28 12:05:28

+0

是的,我們可以避免這種情況。因爲我嘗試過使用Netdrive並通過NetMon進行監控,在這種情況下,NetDrive應用程序未使用代理服務器。它直接從我的IP生成請求。 – Simsons 2010-06-28 12:08:43

1

的HttpWebRequest對於其代理物業 默認值,這是始終WebRequest.GetSystemWebProxy的結果()這是你在IE瀏覽器中配置的代理

,如果你不想使用你需要重寫

Request = (System.Net.HttpWebRequest)HttpWebRequest.Create(strRootURI); 
Request.Proxy = null; 
+0

@ Marc, 獲取錯誤'System.Net.WebRequest'不包含'GetEmptyWebProxy'的定義 – Simsons 2010-06-28 12:21:12

+0

@subhen sry我的壞,我想念閱讀文檔,舊的方法是GlobalProxySelection.GetEmptyWebProxy()。在新版本中,您只需將代理設置爲空 – 2010-06-28 12:25:28