[.NET] События, сериализация и Remoting
попробуй задать у форматтера сериализации TypeFilterLevel = Full
Как?
ListDictionary channelProperties = new ListDictionary;
channelProperties.Add("port", 1111);
BinaryServerFormatterSinkProvider serverSinkProvider = new BinaryServerFormatterSinkProvider;
serverSinkProvider.TypeFilterLevel = System.Runtime.Serialization.Formatters.TypeFilterLevel.Full;
TcpChannel channel = new TcpChannel(channelProperties, null, serverSinkProvider);
А декларативно как?
![](/images/graemlins/smile.gif)
1. Клиент за NAT-ом или proxy (т.е. нет двусторонней связи между клиентом и сервером)
2. На сервере установлен клиент для Microsoft ISA Server.
И в некоторых других случаях.
<formatter
ref="FormatterReference"
type="FormatterSinkProviderType, FormatterAssembly"
customFormatterProperty="customProperty"
includeVersions="true"
strictBinding="false"
...typeFilterLevel="Low | Full"
/>
Сама аккуратность. ТОлько localhost
Тогда лучше решения действительно сложно придумать.
Оставить комментарий
agaaaa
Итак, сабж. Создаётся класс, наследующий MarshalByRefObject. В нём есть event. Требуется удалённо получать от него события.Сервер
Клиент
Клиент падает на test.OnString += new StringEventHandler( test_OnString ); с ошибкой доспупа Type System.DelegateSerializationHolder and the types derived from it (such as System.DelegateSerializationHolder) are not permitted to be deserialized at this security level.
Как это исправить и вообще реально ли получать события от такого удалённого объекта?