2009-07-14 7 views
1

Dans mon cas, le serveur notifiera au client de récupérer ses données lorsque les données seront prêtes. Cette notification est mise en œuvre via un événement auquel le client doit s'abonner.Pourquoi les événements distants .NET du serveur ne peuvent pas atteindre les clients sur des ordinateurs différents

Lorsqu'il est testé sur le même ordinateur, le client est averti sans problème. Cependant, lorsque le client est déplacé vers l'autre ordinateur, il ne peut plus recevoir les notifications.

J'ai vérifié la connexion réseau et la disponibilité du service d'accès distant, et j'ai constaté que le client pouvait accéder à l'objet distant connecté à la fin du serveur, l'abonnement aux événements était correct sans aucune exception.

Mais ce qui me déroutait, c'est que l'événement du serveur == null, signifie que la méthode du client n'est jamais enregistrée ici.

Est-ce que quelqu'un connaît la cause? Merci BR

Répondre

1

Tout d'abord, je regarderais dans les journaux d'événements sur le client et le serveur pour voir s'il y a des erreurs liées à cela. Deuxièmement, est-ce la même identité d'utilisateur avec le client distant et avec le client local? Même utilisateur connecté avec le même compte de domaine?

Qu'en est-il de la configuration du pare-feu? Êtes-vous sûr que Remoting est autorisé? Enfin, juste pour être sûr: savez-vous que Remoting est maintenant obsolète en faveur de WCF?

+0

- Bien sûr, l'accès à distance est autorisé. - les logiciels sont basés sur .net 2.0 –

+0

J'ai dit pare-feu. Le port est-il ouvert pour le trafic entrant? –

+0

Oui, le pare-feu a bloqué les messages entrants. Une fois le pare-feu supprimé, les événements sont arrivés comme prévu. Merci –

2

Chaque objet client qui enregistre dans le serveur doit être MarshalByRefObject et son assembly doit être référencé par le serveur. Vous avez donc besoin des wrappers autour des événements si vous souhaitez les utiliser pour la communication à distance

Peut-être que cet article pourrait vous être utile.

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

+0

Enveloppé autrement, il signalera une erreur de construction –

0

Si les appels Remoting vont les deux sens, les ports doivent être ouvert dans les deux sens qui signifie que votre serveur doit être capable d'ouvrir un port sur vos clients. Vous aurez deux prises de courant ouvertes, une communication bidirectionnelle.