Передача созданного клиентом объекта на сервер .net remoting - PullRequest
1 голос
/ 07 июля 2010

Как я могу передать свой клиентский объект моему объекту сервера в удаленном режиме .net?

Вот так я делаю свой тест.В моей библиотеке классов:

public interface IServer 
{
  bool SubmitMessage( ISampleClass sample ); 
}

[Serializable]
public Server : MarshalByRefObject , IServer 
{
   Public Server() 
   {
   }
   public bool SubmitMessage( ISampleClass sample )
   {
     return true;
   }
}


public interface ISampleClass 
{
  string GetName();
}

[Serializable]
public class SampleClass : MarshalByRefObject , ISampleClass
{
  public SampleClass()
  {
  }
  public string GetName()
  {
    return "test";
  }
}

На моем серверном приложении:

IChannel channel = new TcpChannel(9988);
ChannelServices.RegisterChannel(channel,false);
RemotingConfiguration.RegisteredWellKnownServiceType( typeof(Testing.Server) ,"testremote",WellKnownObjectMode.Singleton);
RemotingConfiguration.RegisterActivatedServiceType(typeof(Testing.SampleClass));
RemotingConfiguration.ApplicationName = "TestRemote";

На моем клиентском приложении:

Type type = typeof(Testing.Server);
Testing.IServer server = (Testing.IServer)Activator.GetOject(type,"tcp://localhost:9988/testremote");
RemotingConfiguration.RegisteredActivatedClientType(typeof(Testing.SampleClass), "tcp://localhost:9988/TestRemote");
Testing.SampleClass test = new Testing.SampleClass(); // proxy class
server.SubmitMessage(test); // Error here

Ошибка, которую я допустил:ограничения безопасности, тип System.Runtime.Remoting.ObjRef недоступен.Внутреннее исключение: запрос не выполнен.

Пожалуйста, скажите мне, что я делаю неправильно.Спасибо!

1 Ответ

0 голосов
/ 07 июля 2010

Я уже выяснил, что я делаю не так. SampleClass не должен был наследовать MarshalByRefObject.

Может быть, это может иметь отношение к будущим.

...