.NET Remoting-Ausnahme wird clientseitig nicht behandelt

Ich überprüfte den Rest der Fernabfrage, und dieser spezielle Fall schien nicht angesprochen worden zu sein.

Ich habe einen .NET Remoting Server / Client eingerichtet. Auf der Serverseite habe ich ein Objekt mit einer Methode, die eine Ausnahme auslösen kann, und einen Client, der versucht, diese Methode aufzurufen.

Server:

public bool MyEquals(Guid myGuid, string a, string b)
{
    if (CheckAuthentication(myGuid))
    {
        logger.Debug("Request for \"" + a + "\".Equals(\"" + b + "\")");
        return a.Equals(b);
    }
    else
    {
        throw new AuthenticationException(UserRegistryService.USER_NOT_REGISTERED_EXCEPTION_TEXT);
    }
}

Klient:

try
{
    bool result = RemotedObject.MyEquals(myGuid, "cat", "dog");
}
catch (Services.Exceptions.AuthenticationException e)
{
    Console.WriteLine("You do not have permission to execute that action");
}

Wenn ich MyEquals mit einer Guid aufrufe, die dazu führt, dass CheckAuthentication false zurückgibt, versucht .NET, die Ausnahme auszulösen, und meldet, dass die AuthenticationException nicht behandelt wurde. Dies geschieht serverseitig. Die Ausnahme wird niemals auf die Client-Seite übertragen, und ich kann nicht herausfinden, warum. Alle Fragen, die ich untersucht habe, behandeln das Problem, dass eine Ausnahme clientseitig behandelt wird, aber es handelt sich nicht um die benutzerdefinierte Ausnahme, sondern um einen Basistyp. In meinem Fall kann ich nicht einmal eine Ausnahme machen, um die Remotegrenze zum Client zu überschreiten. Hier ist eine Kopie von AuthenticationException. Es befindet sich in der gemeinsam genutzten Bibliothek zwischen Server und Client.

[Serializable]
public class AuthenticationException : ApplicationException, ISerializable
{

    public AuthenticationException(string message)
        : base(message)
    {
    }

    public AuthenticationException(SerializationInfo info, StreamingContext context)
        : base(info, context)
    {
    }

    #region ISerializable Members

    void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context)
    {
        base.GetObjectData(info, context);
    }

    #endregion
}

Antworten auf die Frage(3)

Ihre Antwort auf die Frage