Announcement

Collapse
No announcement yet.

Remoting-Objekt ist nicht aktuell

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Remoting-Objekt ist nicht aktuell

    Hallo,

    Kurz:Ich habe eine Client Server Anwendung geschrieben der Server List aus einer XML Datei "Autos" mit deren Attributen ein und erzeugt für jedes eingelesene Auto eine Object Auto das in einem dictionary gespeichert wird.Dieses Dictionary gebe ich per Remoting frei, da ein Client das Dictionary lesen können soll und darstellen per listview .Klappt auch alles ganz gut Problem ist nur wenn ich den client neue Autos in die XML Datei per remoting interface beim Server eintragen lasse und dieser sie erneut in das dictionary einliest hab ich am client noch immer das alte Object und nicht das mit den neuen Einträgen nur wenn ich es unter einem anderen Namen nochmal freigebe und abhole kriege ich das aktuelle dictionary.Aber das muss doch auch einfacher gehen oder?Hier mal der Code mit dem ich das dictionary freigebe:

    public static void PublishObjectOverTCP(MarshalByRefObject instance,string publicName,int tcpPort, bool enableSecurity,bool impersonate)

    {

    // Kanal einrichten (Falls dies noch nicht geschehen ist!)

    SetupServerChannel(tcpPort, enableSecurity, impersonate);

    // Objektinstanz über den TCP-Kanal für entfernten Zugriff veröffentlichen

    RemotingServices.Marshal(instance, publicName);


    }





    public static void SetupServerChannel(int tcpPort, bool enableSecurity,bool impersonate)

    {

    // Kanalnamen erzeugen

    string channelName = "lala" + Convert.ToString(tcpPort);

    // Kanal suchen

    IChannel channel = ChannelServices.GetChannel(channelName);

    // Wenn der Kanal nicht gefunden wurde ...

    if (channel == null)

    {

    // Konfiguration für den TCP-Kanal erstellen

    System.Collections.IDictionary channelSettings = new System.Collections.Hashtable();

    channelSettings["name"] = channelName;

    channelSettings["port"] = tcpPort;

    channelSettings["secure"] = enableSecurity;

    // Wenn Sicherheit aktiviert ist ...

    if (enableSecurity)

    {

    // Impersonierung entsprechend der Einstellung aktivieren oder deaktivieren

    channelSettings["tokenImpersonationLevel"] = impersonate ? System.Security.Principal.TokenImpersonationLevel. Impersonation : System.Security.Principal.TokenImpersonationLevel. Identification;

    // Signatur und Verschlüssung explizit aktivieren

    channelSettings["protectionLevel"] = System.Net.Security.ProtectionLevel.EncryptAndSign ;

    }

    // Binäre Serialisierung von komplexen Objekten aktivieren

    BinaryServerFormatterSinkProvider provider = new BinaryServerFormatterSinkProvider();

    provider.TypeFilterLevel = TypeFilterLevel.Full;

    // Neuen TCP-Kanal erzeugen

    channel = new TcpChannel(channelSettings, null, provider);

    // Kanal registrieren

    ChannelServices.RegisterChannel(channel, enableSecurity);

    }

  • #2
    Könntest Du deinen Code in einen Codeblock schreiben, dann lässt er sich besser lesen. Dafür gibt es extra einen Button.
    Gruss

    Mirko

    Mappen statt hacken mit dem .NET O/R Mapper Invist

    Comment

    Working...
    X