Я пишу приложение .NET Remoting. У меня есть dll, сервер и клиент, все работает правильно. Однако, когда я пытаюсь изменить вызов метода, чтобы он принимал параметр объекта, а не простой тип, например int, он выдает ошибку.
Тип System.Runtime.Remoting.ObjRef и типы из него (такие как System.Runtime.Remoting.ObjRef) не разрешено десериализовывать на этом уровне безопасности.
Метод выглядит примерно так.
public List<Orders> GetOrders(int UserID) { //Works
public List<Orders> GetOrders(Users user) { // Doesnt Work
[Serializable]
public class Users : MarshalByRefObject {
Теперь я сделал класс User также [Serializable] и дал ему наследование MarshalByRefObject. Может ли это быть моей проблемой? Я пробовал удалить [Serializable] из класса User, но он жалуется, потому что не может его интерпретировать.
EDIT. Хорошо, вот мой клиентский метод.
IChannel channel = new TcpClientChannel();
ChannelServices.RegisterChannel(channel, false);
CustomType Server = (CustomType)Activator.GetObject(typeof(CustomType), "tcp://localhost:9934/CustomType");
Вот мой сервер.
BinaryServerFormatterSinkProvider provider = new BinaryServerFormatterSinkProvider();
provider.TypeFilterLevel = TypeFilterLevel.Full;
IDictionary props = new Hashtable();
props["port"] = 9934;
TcpChannel channel = new TcpChannel(props, null, provider);
ChannelServices.RegisterChannel(channel);
RemotingConfiguration.RegisterWellKnownServiceType(typeof(CustomType), "CustomType", WellKnownObjectMode.Singleton);
Console.WriteLine("Server is initialized");
Console.ReadLine();