Как удалить прокси из WebRequest и оставить DefaultWebProxy нетронутым - PullRequest
13 голосов
/ 13 октября 2009

Я использую FtpWebRequest для работы с FTP, и мне нужно подключиться напрямую (без прокси). Однако WebRequest.DefaultWebProxy содержит настройки прокси IE (я считаю).

WebRequest request = WebRequest.Create("ftp://someftpserver/");
// request.Proxy is null here so setting it to null does not have any effect
WebResponse response = request.GetResponse();
// connects using WebRequest.DefaultWebProxy

Мой код - это часть огромного приложения, и я не хочу менять WebRequest.DefaultWebProxy, потому что это глобальное статическое свойство, которое может оказывать неблагоприятное влияние на другие части приложения.

Есть идеи, как это сделать?

Ответы [ 4 ]

23 голосов
/ 13 октября 2009

попробуйте установить прокси в пустой WebProxy, например:

request.Proxy = new WebProxy();

Это должно создать пустой прокси.

9 голосов
/ 27 марта 2010

На самом деле установки его на ноль будет достаточно, чтобы отключить автоматическое определение прокси, вы можете сохранить некоторые циклы :)

request.Proxy = null;

http://msdn.microsoft.com/en-us/library/fze2ytx2.aspx

0 голосов
/ 20 мая 2019

Добавить это в конфиг:

<system.net>
  <defaultProxy enabled="false" useDefaultCredentials="false">
    <proxy />
    <bypasslist />
    <module />
  </defaultProxy>
</system.net>
0 голосов
/ 30 марта 2016
        HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(yourRequestUrl);
        if (webRequest.Proxy != null)
        {
            webRequest.Proxy = null;
        }

        webRequest.KeepAlive = true;
        webRequest.Method = "POST";
        webRequest.ContentType = "application/json";
        var json = JsonConvert.SerializeObject(yourObject);
        ASCIIEncoding encoder = new ASCIIEncoding();
        byte[] postBytes = encoder.GetBytes(json);
        webRequest.ContentLength = postBytes.Length;
        webRequest.CookieContainer = new CookieContainer();
        String encoded = System.Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(string.Format("{0}:{1}", userName, password)));
        webRequest.Headers.Add("Authorization", "Basic " + encoded);
        Stream requestStream = webRequest.GetRequestStream();
        requestStream.Write(postBytes, 0, postBytes.Length);
        requestStream.Close();

        HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse();
        string result;
        using (StreamReader rdr = new StreamReader(response.GetResponseStream()))
        {
                result = rdr.ReadToEnd();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...