Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Este tema es específico de una tecnología heredada que se mantiene para la compatibilidad con versiones anteriores con aplicaciones existentes y no se recomienda para nuevo desarrollo. Las aplicaciones distribuidas se deberían desarrollar utilizando Windows Communication Foundation (WCF).
Puede crear su propio tipo de excepción que se puede iniciar por un objeto remoto y se puede detectar por un llamador remoto al derivar de la clase RemotingException e implementar la interfaz ISerializable.
Cree un tipo de excepción que se pueda iniciar por objetos remotos y detectar por llamadores remotos.
Defina una clase que se derive de la clase RemotingException.
Public Class RemotableType Inherits MarshalByRefObject Implements ISerializable ' ... End Class 'RemotableType
public class RemotableType : MarshalByRefObject{ // ... }
Aplique el atributo SerializableAttribute a la clase.
<Serializable()> Public Class CustomRemotableException Inherits RemotingException ' ... End Class
[Serializable] public class CustomRemotableException : RemotingException, ISerializable { // ... }
Implemente un constructor de deserialización que tome los objetos SerializationInfo y StreamingContext como parámetros.
Public Sub New(ByVal info As SerializationInfo, ByVal context As StreamingContext) _internalMessage = info.GetValue("_internalMessage", GetType(String)) End Sub
public CustomRemotableException(SerializationInfo info, StreamingContext context) { _internalMessage = (string)info.GetValue("_internalMessage", typeof(string)); }
Ejemplo
El siguiente ejemplo de código proporciona una implementación simple que, si se configura, se vuelve a copiar al llamador cuando se inicia el objeto de servidor remoto.
<Serializable()> Public Class CustomRemotableException
Inherits RemotingException
Implements ISerializable
Private _internalMessage As String
Public Sub New()
_internalMessage = String.Empty
End Sub
Public Sub New(ByVal message As String)
_internalMessage = message
End Sub
Public Sub New(ByVal info As SerializationInfo, ByVal context As StreamingContext)
_internalMessage = info.GetValue("_internalMessage", GetType(String))
End Sub
Public Overrides Sub GetObjectData(ByVal info As SerializationInfo, ByVal context As StreamingContext)
info.AddValue("_internalMessage", _internalMessage)
End Sub
Public Overrides ReadOnly Property Message() As String
Get
Return "This is your custom remotable exception returning : """ + _internalMessage + """"
End Get
End Property
End Class
[Serializable]
public class CustomRemotableException : RemotingException, ISerializable
{
private string _internalMessage;
public CustomRemotableException()
{
_internalMessage = String.Empty;
}
public CustomRemotableException(string message)
{
_internalMessage = message;
}
public CustomRemotableException(SerializationInfo info, StreamingContext context)
{
_internalMessage = (string)info.GetValue("_internalMessage", typeof(string));
}
public override void GetObjectData(SerializationInfo info, StreamingContext context)
{
info.AddValue("_internalMessage", _internalMessage);
}
// Returns the exception information.
public override string Message
{
get
{
return "This is your custom remotable exception returning: \""
+ _internalMessage
+ "\"";
}
}
}
Vea también
Referencia
Conceptos
Fecha de compilación: 2010-02-13