Announcement

Collapse
No announcement yet.

Die WCF...

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

  • Die WCF...

    Hi @all,

    habe folgendes Problem:

    Habe mit einer NetNamedPipe Bindung die Kommunikation zwischen mehreren Prozessen realisiert(mit mehreren Clients, Service wird in einer Forms Anwendung gehostet). Nur mit dem Rückruf von Ereignissen gibts Probleme:

    Es klappt alles so weit gut, der Rückruf erfolgt und die Clientanwendungen tun was sie tun sollen. Nur wenn einer der Clients geschlossen wird erscheint in der Ausgabe dann eine Ausnahme System.IO.PipeException und mehrfach eine Ausnahme System.ServiceModel.CommunicationException.

    Ein erneuter Ruf an den Service der restlichen Clients endet damit, das die proxys derselben melden, das der InnerDuplexChannel
    dann Faulted ist. Meldung:

    Das Kommunkationsobjekt "System.ServiceModel.Channels.ServiceChannel" kann nicht zur Kommunikation verwendet werden, weil es sich im Faulted-Status befindet.

    Was kann ich tun?

  • #2
    Hallo,

    tritt das Problem auch dann auf, wenn das ServiceHost-Objekt eine Ereignisbehandlung für das Faulted-Event aktiviert und dort im Fehlerfall die Abort-Methode aufruft, um danach eine neue eigene Instanz zu erzeugen und über die Methode Open zu aktivieren?

    Wenn ein Service im Faulted-Zustand ist, kann er keine weiteren Aufrufe mehr verarbeiten.

    Comment


    • #3
      Hi Andreas,

      die CallbackClients melden sich mit dem Ereignis

      Code:
      InnerDuplexChannel.Faulted
      sobald man einen der Clients schließt.

      Vorgaben:

      ServiceBehavior: InstanceContext.Single, ConcurrencyMode.Single
      CallbackBehavior: ConcurrencyMode.Multiple

      Das kann ich jetzt machen wie du schon sagtest, halt nur den Client in dem Fall mit Abort, neu instanzieren und open.

      Jetzt funktionierts anscheinend...

      Comment

      Working...
      X