Почему события удаленного взаимодействия .NET с сервера не могут достигать клиентов на разных компьютерах - PullRequest
1 голос
/ 14 июля 2009

В моем случае сервер уведомит клиента о необходимости получения его данных, когда они будут готовы. Это уведомление реализуется через событие, на которое клиент должен подписаться.

При тестировании на одном компьютере клиент получает уведомления без проблем. Однако, когда клиент перемещается на другой компьютер, он больше не может получать уведомления.

Я проверил сетевое соединение и доступность службы удаленного взаимодействия и обнаружил, что клиент может получить доступ к объекту удаленного взаимодействия, установленному на стороне сервера, подписка на события прошла без исключений.

Но что меня смутило, так это то, что на самом деле событие сервера == null означает, что метод клиента здесь никогда не регистрировался.

Кто-нибудь знает причину? Спасибо BR

Ответы [ 3 ]

2 голосов
/ 14 июля 2009

Каждый клиентский объект, который регистрируется на событии сервера, должен быть MarshalByRefObject, а сервер должен ссылаться на его сборку. Поэтому вам нужны обертки вокруг событий, если вы хотите использовать их в удаленном взаимодействии

Возможно, эта статья может вам помочь.

http://aviadezra.blogspot.com/2008/06/code-snippets-remoting-client-server_19.html

1 голос
/ 14 июля 2009

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

Во-вторых, идентична ли пользовательская идентичность удаленному клиенту и локальному клиенту? То же вошедший в систему пользователь с той же учетной записью домена?

А как насчет настройки брандмауэра? Вы уверены, что удаленное взаимодействие разрешено в?

Наконец, просто чтобы убедиться: знаете ли вы, что удаленное взаимодействие теперь не рекомендуется в пользу WCF?

0 голосов
/ 14 июля 2009

Если удаленные вызовы идут в обоих направлениях, порты должны быть открыты в обоих направлениях, что означает, что ваш сервер должен иметь возможность открывать порт на ваших клиентах. У вас будет два открытых гнезда, двунаправленная связь.

...