Windows Service + .Net Remoting (C#)
Вот основной метод сервиса:
protected override void OnStart(string[] args)
{
try
{
TcpChannel serverChannel = new TcpChannel(9090);
ChannelServices.RegisterChannel(serverChannel, false);
ChannelDataStore data = (ChannelDataStore)serverChannel.ChannelData;
RemotingConfiguration.RegisterWellKnownServiceType(
typeof(WebCrawler.Crawler), "RemoteObject.rem",
WellKnownObjectMode.Singleton);
WebCrawler.Crawler crawler = new WebCrawler.Crawler();
crawler.Name = "Hello world!";
RemotingServices.Marshal(crawler);
}
catch (Exception error)
{
}
}
Вот метод клиента, который пытается получить объект класса, созданного в сервере:
static void Main(string[] args)
{
TcpChannel clientChannel = new TcpChannel();
ChannelServices.RegisterChannel(clientChannel, false);
WellKnownClientTypeEntry remoteType = new WellKnownClientTypeEntry(
typeof(WebCrawler.Crawler), "tcp://localhost:9090/RemoteObject.rem");
RemotingConfiguration.RegisterWellKnownClientType(remoteType);
string name = ((WebCrawler.Crawler)Activator.GetObject(typeof(WebCrawler.Crawler), "tcp://localhost:9090/RemoteObject.rem")).Name;
Console.WriteLine(name);
Console.ReadLine();
}
Однако вместо того, чтобы получить "Hello World!" я получаю "Default crawler" (значение поля WebCrawler.Crawler.Name, заданное по-умолчанию).
Что я неправильно сделал?