Tôi đang gặp vấn đề với một lớp singleton tôi đang phơi bày thông qua truy cập từ xa. Trong máy chủ của tôi, tôi có:Làm việc với những người độc thân trong. Net Remoting
TcpChannel channel = new TcpChannel(Settings.Default.RemotingPort);
ChannelServices.RegisterChannel(channel, false);
RemotingConfiguration.RegisterWellKnownServiceType(
typeof(RemotableObject), "RemotableObject",
WellKnownObjectMode.Singleton);
RemotableObject là một đối tượng đơn lẻ kế thừa MarshalByRefObject.
Khách hàng của tôi kết nối với nó qua:
remoteObject = (RemotableObject)Activator.GetObject(
typeof(RemotableObject),
string.Format("tcp://{0}:{1}/RemotableObject", serverIP, serverPort));
Tất cả mọi thứ hoạt động tốt như xa như remoting đi, nhưng khi tôi truy cập vào đối tượng singleton trong mã máy chủ của tôi như thế này:
int someValue = RemotableObject.Instance.SomeDynamicValue;
Nó truy cập một cá thể khác với các máy khách. Tôi cũng đã xác minh rằng hàm tạo riêng trong RemotableObject bị nhấn hai lần trong khi gỡ lỗi.
Tôi có thể nhận được hành vi mong muốn nếu tôi nhận được một phiên bản RemotableObject thông qua truy cập từ xa trong mã máy chủ của tôi, nhưng có cách nào để tôi có thể truy cập cùng một đối tượng như máy khách của tôi không.
Điều đó hoạt động hoàn hảo! Cảm ơn đã phản ứng nhanh chóng! – Todd
Giá trị của 'MesgURI' là gì? Kênh tcp của tôi được gọi là 'UsersTcp' và tôi đã thử với tên đó và với url:' tcp: // localhost: 5000/UserTcp' và cả hai đều cho tôi một lỗi không tìm thấy dịch vụ. – moondaisy
Phải là 'tcp: // [Tên máy chủ]: [PortNumber]/MesgUri' như trong' tcp: // MYSERVERNAME: 5212/UsersTcp' –