Я пишу приложение .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();