Отключение Remoting сервера по HTTP
От: Sotnich Россия  
Дата: 26.05.05 08:56
Оценка:
Добрый день.
Есть некий сервер. Сервер регистрирует HTTP канал на неком порту и предоставляет некий класс по Remoting с серверной активацией (модель Singleton).
Некоторый клиент обращающается по Remotiong к этому серверу.
Клиент и сервер запущены на одной машине и в строке соединения у клиента прописан localhost. Однако машина подключена в сеть.
Клиент подключается к серверу — все ОК. Однако, если отсоединить машину от сети (вырвать кабель, например), то клиенту при очередном обращении к серверу кидается исключение:

System.Net.WebException: The underlying connection was closed: Unable to connect to the remote server

Может кто знает причину такого поведения и как с этим бороться (хотельсь бы, чтобы работа клиента и сервера на локальной машине не зависила бы от сети, к которой данная машина подключена).
Заранее спасибо.
Re: Отключение Remoting сервера по HTTP
От: Mika Soukhov Stock#
Дата: 26.05.05 08:59
Оценка:
Здравствуйте, Sotnich, Вы писали:

Может нужно сделать bypass для прокси?
Re[2]: Отключение Remoting сервера по HTTP
От: Sotnich Россия  
Дата: 26.05.05 09:37
Оценка:
Здравствуйте, Mika Soukhov, Вы писали:

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


MS>Может нужно сделать bypass для прокси?


А по-подробнее, если не сложно?
RE: Re[2]: Отключение Remoting сервера по HTTP
От: Аноним  
Дата: 26.05.05 15:11
Оценка:
Попробуй вместо локалхост в строке соединения написать ИП (127.0.0.1) ...


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re[3]: Отключение Remoting сервера по HTTP
От: Sotnich Россия  
Дата: 26.05.05 17:47
Оценка:
Здравствуйте, Alexander, Вы писали:

A>Попробуй вместо локалхост в строке соединения написать ИП (127.0.0.1) ...


Ааа.
Не, не помогло. Да и не удивительно.
Кстати, при восстановлении соединения клиент вновь получает доступ к серверу...
Re: Отключение Remoting сервера по HTTP
От: Sotnich Россия  
Дата: 30.05.05 11:00
Оценка:
Дальнейшее копание в проблеме выявило следующие интересные особенности:

— такая ситуация проявляется и с TCP протоколом

— такая ситуация не проявляется, если вызывается метод объекта полученного "напрямую" через Remoting
    т.е. 
    Class1 c = (Class1)Activator.GetObject( typeof( Class2 ), "tcp://127.0.0.1:6666/Class2" );
    c.Test();

— такая ситуация возникает, если вызывается метод подобъекта объекта, полученного "напрямую" через Remoting
    т.е. 
    Class1 c = (Class1)Activator.GetObject( typeof( Class2 ), "tcp://127.0.0.1:6666/Class2" );
    c.SomeClass3.Test();

— более подробно исключение звучит так: "затребованное имя найденно в базе данных, но для имени отсутствуют связанные с ним данные, которые были разрешены для него".

— для сервера, запущенного тогда, когда машина отключена от сети такая проблемма не появляется...
Re[2]: Отключение Remoting сервера по HTTP
От: Sotnich Россия  
Дата: 30.05.05 17:22
Оценка:
Здравствуйте, Sotnich, Вы писали:

S>Дальнейшее копание в проблеме выявило следующие интересные особенности:


S> [...]


Проблемма пофиксилась вот так:

    System.Collections.IDictionary props = new System.Collections.Hashtable();
    props["machineName"] = "MASHINENAME";
    ChannelServices.RegisterChannel( new HttpChannel( props, clientProvider, provider) );


Вообще ситуация стала более понятна — при включенном соединении создавался канал с реальным IP адресом, связанный с ним URI был примерно такого вида tcp://192.168.0.101:6666. После отключения от сети, естественно такой IP переставал действовать...

НО!!!!!!
Почему работало соединение с объектом, полученным "напрямую", а с "полученным косвенно" не работало!!!! Канал ведь один и тот же.

Помнится, тут кто-то жаловался, что РСДН оскудел на сложные вопросы
Re[3]: Отключение Remoting сервера по HTTP
От: TK Лес кывт.рф
Дата: 31.05.05 12:09
Оценка:
Hello, "Sotnich"
>
> НО!!!!!!
> Почему работало соединение с объектом, полученным "напрямую", а с
> "полученным косвенно" не работало!!!!
Канал ведь один и тот же.
>
>

Это-же просто... В первом случае адрес объекта указывался явно, а в другом
адрес формировался сервером. В итоге, получалось, что у клиента и у сервера
было разное мнение относительно того, как с ним нужно работать...
Posted via RSDN NNTP Server 1.9
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.