Nie obsłużono wyjątku .NET Remoting po stronie klienta
Sprawdziłem resztę pytań zdalnych, a ten konkretny przypadek nie został rozwiązany.
Mam konfigurację serwera / klienta .NET. Po stronie serwera mam obiekt z metodą, która może rzucić wyjątek i klient, który spróbuje wywołać tę metodę.
Serwer:
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");
}
Kiedy wywołuję MyEquals z Guid, który powoduje, że CheckAuthentication zwraca false, .NET próbuje rzucić wyjątek i mówi, że AuthenticationException nie został obsłużony. Dzieje się tak po stronie serwera. Wyjątek nigdy nie jest przenoszony na stronę klienta i nie mogę zrozumieć dlaczego. Wszystkie pytania, na które patrzyłem, dotyczą kwestii obsługi wyjątku po stronie klienta, ale nie jest to wyjątek niestandardowy, ale typ podstawowy. W moim przypadku nie mogę nawet uzyskać żadnego wyjątku, aby przekroczyć granicę zdalną dla klienta. Oto kopia AuthenticationException. Znajduje się w bibliotece współdzielonej między serwerem a klientem.
[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
}