2009-09-18 7 views
0

Je viens de commencer avec le développement AddIn et j'ai un petit problème. Le code suivant fonctionne bien dans une application de la console:.NET Remoting dans AddIn VS2008 ne fonctionne pas?

 Trace.WriteLine("Started"); 
     var channel = new TcpChannel(8083); 
     ChannelServices.RegisterChannel(channel, false); 
     RemotingConfiguration.RegisterWellKnownServiceType(typeof(RemoteObject), "HelloWorld", 
                  WellKnownObjectMode.Singleton); 

Mais, j'essaye dans la classe AddIn, il ne fonctionne pas. Lorsqu'il est utilisé dans le Connect() il lance une exception "double port occupé" (peut-être que le plugin était en cours d'exécution dans deux instances de VS), donc j'ai essayé de le déplacer dans une fonction appelée (celle du menu toolbox).

Mais encore, pour une raison quelconque, je ne peux pas me connecter. Console App fonctionne très bien avec exactement le même code. AddIns s'exécute-t-il dans un sandbox et est-il propagé pour "démarrer les serveurs"?

Chis

Répondre

0

AddIns ne fonctionnent pas dans un bac à sable si cela ne devrait pas être la question. Il est beaucoup plus probable qu'une autre application reste sur ce port. Ou que votre méthode de connexion est appelée deux fois. Soit pour une raison de démarrage bizarre, soit pour que l'addin se lance deux fois en mode silencieux.

Un moyen efficace de suivre cette baisse serait de mettre une ligne MessageBox.Show juste au-dessus de la création de la TcpChannel. Cela empêchera votre application de double liaison silencieuse au port et, espérons-le, vous permettra de traquer si elle est lancée deux fois.

0
'Check to see if the clint has already been Registered as a well known client on the server. 

Dim obj As WellKnownClientTypeEntry = RemotingConfiguration.IsWellKnownClientType(GetType([yourtype])) 

If obj Is Nothing Then 'ensure the wellknownclient hasn't been registered already 

    If ChannelServices.GetChannel("HttpBinary") Is Nothing Then 

    'The above check ensures that another object has not already registered the "HttpBinary" 

     Dim props As New Hashtable 

     props("name") = "HttpBinary" 


     Dim formatter As New BinaryClientFormatterSinkProvider 

     Dim channel As New HttpChannel(props, formatter, Nothing) 
     ChannelServices.RegisterChannel(channel, lvUsingSecure) 

    End If 

    RemotingConfiguration.RegisterWellKnownClientType(GetType([yourtype]), lvregisteredServer) 

End If