WebRequest и "The requested protocol has....."
От: drot Беларусь  
Дата: 17.04.12 12:01
Оценка:
Доброго дня!

я уже потерялся

простейшее приложение

using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Net;
using System.IO;

namespace WindowsFormsApplication2
{
  static class Program
  {
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
      WebRequest regWeb;
      try
      {
        IWebProxy asd = WebRequest.GetSystemWebProxy();
        WebRequest request = WebRequest.Create("http://portal.me/somefile.doc");
        if (request != null)
        {
          WebResponse response = request.GetResponse();
          if (response != null)
          {
            response.Close();
          }
        }
        MessageBox.Show("ok");
      }
      catch (Exception ex)
      {
        MessageBox.Show(ex.Message);
      }
    }
  }
}


на

        IWebProxy asd = WebRequest.GetSystemWebProxy();


получаю это:
---------------------------
The requested protocol has not been configured into the system, or no implementation for it exists
---------------------------
OK
---------------------------

        WebRequest request = WebRequest.Create("http://portal.me/somefile.doc");


получаю:
---------------------------
Error creating the Web Proxy specified in the 'system.net/defaultProxy' configuration section.
---------------------------
OK
---------------------------

если по первому сообщению все мутно, то по второму можно найти рекомендации по переустановке фрейворка, что мне в принципе не помогает (сносил все потом все ставил начиная с 1-ого, переустановка студии тоже не помогла)

Приведенный мною код на других машинах работает (и стой же конфигурацией с другой).

Может у кого-нибудь есть умные мысли?

ЗЫ: Win2003 VS 9.0, Framework 3.5
ЗЫ: переустанавливать систему не хочу
Re: WebRequest и "The requested protocol has....."
От: adontz Грузия http://adontz.wordpress.com/
Дата: 17.04.12 12:03
Оценка:
Здравствуйте, drot, Вы писали:

А что в system.net/defaultProxy ? Особенно в machine.config/web.config? У меня такое
    <system.net>
        <defaultProxy>
            <proxy usesystemdefault="true" />
        </defaultProxy>
    </system.net>
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[2]: WebRequest и "The requested protocol has....."
От: drot Беларусь  
Дата: 17.04.12 12:43
Оценка:
Здравствуйте, adontz, Вы писали:

у меня тоже самое, при этом когда я туда руками прописывал свой прокси (при этом proxy usesystemdefault="false"), то на

WebRequest request = WebRequest.Create("http://portal.me/somefile.doc");

получаю: The requested protocol has not been configured into the system, or no implementation for it exists
вместо: Error creating the Web Proxy specified in the 'system.net/defaultProxy' configuration section.

какая то глобальная муть с машиной, практически уверен, что переустановка системы поможет, но не хочеться
Re[3]: WebRequest и "The requested protocol has....."
От: QrystaL Украина  
Дата: 17.04.12 12:50
Оценка:
Здравствуйте, drot, Вы писали:
D>какая то глобальная муть с машиной, практически уверен, что переустановка системы поможет, но не хочеться

Возьмите ILSpy, приаттачьтесь к исходникам дотнета и отдебажьте вызов WebRequest.Create
Re[4]: WebRequest и "The requested protocol has....."
От: drot Беларусь  
Дата: 17.04.12 14:00
Оценка:
забрел глубоко внутрь

        internal unsafe NetworkAddressChangePolled()
        {
            Socket.InitializeSockets();
            int blocking; 
            if (Socket.SupportsIPv4)
            { 
                blocking = -1; 
                ipv4Socket = SafeCloseSocketAndEvent.CreateWSASocketWithEvent(AddressFamily.InterNetwork, SocketType.Dgram, (ProtocolType)0, true, false);
                UnsafeNclNativeMethods.OSSOCK.ioctlsocket(ipv4Socket, IoctlSocketConstants.FIONBIO, ref blocking); 
            }

            if(Socket.OSSupportsIPv6){
                blocking = -1; 
                ipv6Socket = SafeCloseSocketAndEvent.CreateWSASocketWithEvent(AddressFamily.InterNetworkV6, SocketType.Dgram, (ProtocolType)0, true, false);
                UnsafeNclNativeMethods.OSSOCK.ioctlsocket(ipv6Socket,IoctlSocketConstants.FIONBIO,ref blocking); 
            } 
            Setup(StartIPOptions.Both);
        }

после вызова
Socket.InitializeSockets();

следующее:
Socket.SupportsIPv4 = true
Socket.SupportsIPv6 = false
и
Socket.OSSupportsIPv6 = true
падение на строке
ipv6Socket = SafeCloseSocketAndEvent.CreateWSASocketWithEvent(AddressFamily.InterNetworkV6, SocketType.Dgram, (ProtocolType)0, true, false);

теперь то, что то проясняется, протокол конечно ни разу не настроен, но зачем создавать сокет если Socket.SupportsIPv6 = false, даже если и Socket.OSSupportsIPv6 = true

главное как с этим жить дальше?
Re: WebRequest и "The requested protocol has....."
От: Mr.Cat  
Дата: 17.04.12 14:05
Оценка:
Я, может, глупость скажу, но ты не проверял, как именно настроен прокси в системе (это же прокси из свойств обозревателя, да?)? Может, там фигня какая-нибудь?
Re[2]: WebRequest и "The requested protocol has....."
От: drot Беларусь  
Дата: 17.04.12 14:19
Оценка:
Здравствуйте, Mr.Cat, Вы писали:

MC>Я, может, глупость скажу, но ты не проверял, как именно настроен прокси в системе (это же прокси из свойств обозревателя, да?)? Может, там фигня какая-нибудь?


ну да, именно оттуда, проверял 10 раз, сносил/ставил 10 раз

без прокси та же хрень
The requested protocol has not been configured into the system, or no implementation for it exists
при вызове
WebRequest request = WebRequest.Create("http://portal.me/somefile.doc");

не проверял но уверен, что при попытке создать IPv6 сокет...
Re[3]: WebRequest и "The requested protocol has....."
От: drot Беларусь  
Дата: 17.04.12 14:27
Оценка:
может где то в политиках ip6 можно рубануть нахрен?
Re[3]: WebRequest и "The requested protocol has....."
От: Mr.Cat  
Дата: 17.04.12 14:39
Оценка:
Здравствуйте, drot, Вы писали:
D>без прокси та же хрень
D>The requested protocol has not been configured into the system, or no implementation for it exists
Может, какая фигня с настройками протоколов на адаптере (например, отключен ipv6 или, наоборот, включен)? И что возвращает GetHostEntry для твоего адреса?
Re[4]: WebRequest и "The requested protocol has....."
От: Аноним  
Дата: 17.04.12 14:48
Оценка:
Здравствуйте, Mr.Cat, Вы писали:

MC>Здравствуйте, drot, Вы писали:

D>>без прокси та же хрень
D>>The requested protocol has not been configured into the system, or no implementation for it exists
MC>Может, какая фигня с настройками протоколов на адаптере (например, отключен ipv6 или, наоборот, включен)? И что возвращает GetHostEntry для твоего адреса?

на адаптере он отсутствует как таковой вообще, сейчас не проверял но GetHostEntry возвращает только ip4 (проверю завтра, бежать надо домой)
Re[5]: WebRequest и "The requested protocol has....."
От: drot Беларусь  
Дата: 18.04.12 06:41
Оценка:
Dns.GetHostEntry(Environment.MachineName).AddressList


возвращает один ip4 адрес
Re[5]: WebRequest и "The requested protocol has....."
От: drot Беларусь  
Дата: 18.04.12 07:12
Оценка:
получил счастье после добавления на сетевом адаптере (без какого либо конкурирования) TCP/IP 6-ой версии.

что меня поражает, так на соседней машине с той же 2003-ей виндой, с того же дистрибутива все работает без TCP/IP 6...

всем спасибо за участие
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.