Tôi đang viết một ứng dụng .NET Remoting. Tôi có dll, máy chủ và máy khách của tôi đều hoạt động chính xác. Tuy nhiên, khi tôi cố gắng thay đổi lời gọi phương thức của tôi để lấy một tham số đối tượng thay vì một kiểu đơn giản như một int, nó phàn nàn với lỗi này..NET Remoting, chuyển các đối tượng vào các phương thức
Loại System.Runtime.Remoting.ObjRef và các loại từ nó (chẳng hạn như System.Runtime.Remoting.ObjRef) không được phép để được deserialized ở mức độ bảo mật này.
Phương pháp này giống như thế này.
public List<Orders> GetOrders(int UserID) { //Works
public List<Orders> GetOrders(Users user) { // Doesnt Work
[Serializable]
public class Users : MarshalByRefObject {
Bây giờ tôi cũng đã tạo lớp người dùng, [Serializable] và gán cho nó kế thừa MarshalByRefObject. Đây có phải là vấn đề của tôi không? Tôi đã cố gắng loại bỏ [Serializable] từ lớp User và nó phàn nàn vì nó không thể giải thích nó.
EDIT Ok, đây là phương pháp khách hàng của tôi.
IChannel channel = new TcpClientChannel();
ChannelServices.RegisterChannel(channel, false);
CustomType Server = (CustomType)Activator.GetObject(typeof(CustomType), "tcp://localhost:9934/CustomType");
Đây là máy chủ của tôi.
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();
Các bạn đã thử bằng cách loại bỏ ' MarshalByRefObject' từ lớp Người dùng? –
Tôi chưa hoàn toàn cố gắng để tôi quay lại và đảm bảo – meanbunny
Khi tôi xóa MarshalByRefObject, nó không trợ giúp, cảm ơn! – meanbunny