2009-07-22 15 views
5

En mi aplicación ASP.NET, tengo una línea en el evento de inicio de aplicación global que configura el canal remoto del cliente llamando a RemotingConfiguration.Configure().Cómo determinar si el canal remoto ya está registrado

Esto funciona bien la primera vez, pero cuando mi aplicación web se recicla, el evento de inicio de la aplicación se volvió a disparar causando la siguiente excepción interacción remota:

Remoting configuración falló con la excepción 'System.Runtime.Remoting.RemotingException : El canal 'tcp' ya está registrado.

Me gustaría detectar si el canal ya está configurado para que pueda evitar esta excepción.

Respuesta

0

Pero, ¿qué harías si lo encontrases ya registrado?

En cualquier caso, solo quería asegurarme de que supiera que .NET Remoting ha quedado en desuso en favor de WCF.

+0

Si supiera que ya estaba registrado, yo no lo llamaría RemotingConfiguration.Configure() para evitar la excepción. –

+0

Pero no estaría registrado para usted, ¿o sí? –

+0

Sería registrado en nuestro software. Supongo que la primera vez que registramos el canal remoto, se registra para el proceso w3wp.exe. Como el proceso no se reinicia cuando la aplicación web se recicla, la segunda llamada de configuración del evento application_start provoca una excepción. –

4

He estado teniendo este problema también.

El problema es que puede detener la aplicación que llamó a RemotingConfiguration.Configure() pero eso no hace que el canal esté disponible. Es algo que tiene que ver con los puertos o podría ser el nombre del canal, no estoy seguro.

La solución que encontré que parece funcionar es obtener los canales registrados y anular el registro del canal que desea eliminar.

Aquí hay un código

RemotingConfiguration.Configure(appConfig, false); 

// do this to unregister the channel 
IChannel[] regChannels = ChannelServices.RegisteredChannels; 
IChannel channel = (IChannel)ChannelServices.GetChannel(regChannels[0].ChannelName); 

ChannelServices.UnregisterChannel(channel); 

RemotingConfiguration.Configure(appConfig, false); // this is just a test to see if we get an error 

Espero que esto funcione para usted, que tiene para mí

Cuestiones relacionadas