2010-06-28 3 views
0

У меня есть следующий код, который обходит прокси-сервер для локальной машины, а затем отправляет WebRequest.WebRequest генерируется с другого IP-адреса вместо моего IP-адреса системы?

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

Edit 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-адрес является адресом прокси-сервера ... и вы настраиваете прокси для веб-запроса, чтобы быть, что прокси-сервер.

Почему вы ожидаете, что он не будет использовать прокси?

Обратите внимание, что вы обходите запросы к на локальную машину, а не от локальной машины, если это ваша точка путаницы.

EDIT: Если вы действительно хотите знать, что происходит, получите Wireshark, который позволит вам увидеть все пакеты, поступающие с вашего устройства.

Если вы хотите указать «не использовать прокси-сервер», а затем сделать что-то вроде:

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

Я удалил брусчатки прокси из моего кода сейчас, но теперь запрос идет от 172.24.1.86 – Simsons

+0

@Subhen: Возможно, это прокси-сервер по умолчанию для вашей сети? –

+0

Да, есть ли способ избежать этого. Поскольку я пытался использовать Netdrive и отслеживал его через NetMon, в этом случае приложение NetDrive не использует прокси-сервер. Он напрямую генерирует запрос непосредственно с моего IP-адреса. – Simsons

1

HttpWebRequest имеет значение по умолчанию для его прокси собственности это всегда результат WebRequest.GetSystemWebProxy() который является прокси-настроенную в IE

, если вы не хотите использовать прокси-сервер вам необходимо переопределить значение по умолчанию прокси по

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

@ Marc, Получение ошибки «System.Net.WebRequest» не содержит определения для «GetEmptyWebProxy» – Simsons

+0

@subhen sry my bad, я пропустил чтение документов, старый метод был GlobalProxySelection.GetEmptyWebProxy(). в новой версии вам просто нужно установить прокси-сервер в null –