Как удаленные события в.NET Remoting?

У меня есть класс для удаленного взаимодействия, который содержит события. Но когда я пытаюсь установить обработчик для этих событий на стороне клиента, я получаю исключение. Мой код выглядит так:

    //In common library
    class RemoteClass : MarshalByRefObject
    {
    public event EventHandler SomeEvent = null;

    public void SomeMethod () {}
    }

    //On client-side
    RemoteClass r = (RemoteClass) RemotingServer.Connect (typeof(RemoteClass), "myURL");

    r.SomeMethod (); //Everything is OK here.

    r.SomeEvent += delegate (object o, EventArgs e) { }; //Exception:Type 

System.DelegateSerializationHolder и типы, полученные из него (такие как System.DelegateSerializationHolder) не разрешается десериализация на этом уровне безопасности.

Что я делаю не так?

1 ответ

Решение

http://msdn.microsoft.com/en-us/library/61w7kz4b(v=vs.80).aspx

В.NET Framework уровень безопасности по умолчанию для распределенного взаимодействия (удаленного взаимодействия) является низким. Это влияет на передачу пользовательского типа объекта удаленным методам. В некоторых случаях вам может потребоваться настроить уровень безопасности по умолчанию на полный, чтобы разрешить сериализацию объектов.

Если вы находитесь в ASP.Net, вот как установить уровень безопасности (доверия):

http://msdn.microsoft.com/en-us/library/ff648344.aspx

Другие вопросы по тегам