Domanda

Ho un servizio WF che sto cercando di impostare ricevere le attività di "Subscribe" e "Unsubscribe". Sto utilizzando Questo Durable Tutorial Duplex WF come base perché i miei Esegue servizio callback ai clienti. In sostanza, pensare ad esso come un servizio di chat.

posso effettuare chiamate client al due ricevono attività più che bene. Quello che succede è l'indirizzo di callback del client viene passato in per poterti iscrivere () sul servizio. L'indirizzo è memorizzato come una variabile nel servizio e tutto sembra WF come avrebbe funzionato come ci aspettavamo.

Quando un client chiama Cancellati (), il mio orologio ho impostato sull'indirizzo var durante il debug mostra come null. Quindi cosa succede?

Ecco la configurazione di base del mio servizio WF disposizione ...

Il tutto è avvolto in un'attività DoWhile. All'interno di che è un'attività di ritiro e due rami di Pick. Il primo ramo è per le attività di sottoscrizione. Ha una ricezione-sendreply attività che assegna la stringa passata dal client per l'indirizzo WF var. La seconda impugnatura ramo cancellarsi. Il grilletto è l'attività richiesta e l'indirizzo del client è ancora passata.

Da lì si va in una sequenza, a partire da un caso. Esso controlla per vedere se il unsubscribeAddress è uguale al address già sottoscritto. Se lo fa, allora imposta il address per String.Empty e invia un messaggio di nuovo successo al client.

Perché una variabile che è ambito all'attività DoWhile avvolgente essere implicitamente assegnato a nulla? Sto cercando di ottenere questo al lavoro in modo da poter implementare più abbonati client da lì e il lavoro sul trigger che richiamano le richiamate a più client.

CONCAT EDIT: Ho impostato un punto di interruzione a livello DoWhile e il mio var è nullo volta Unsubscribe() si chiama. Quando Subscribe() viene richiamato, gli spettacoli di orologi un valore nel var tutto il percorso attraverso. Fino a quando ho Unsubscribe() con un cliente. Dovrei usare una mentre l'attività, invece?

È stato utile?

Soluzione 3

Wow, roba spaventosa ok. Ho dovuto modificare a mano il file xamlx anteriore e se i riferimenti che ho curato per la SendReplyToReceive salvato divertente quando sono passato di nuovo al designer attività. Ha fatto sembrare che ho avuto due Unsubscribe() di e non solo, ma le maniglie di correlazione per ogni ramo stavano attraversando tra i rami.

Sono tutto impostato ora. Per risolvere il problema ho rimosso tutte le attività di messaggistica, è sceso in una nuova attività ReceiveAndSendReply in blocco di azione filiale 1 di. Poi ho trascinato la ricezione di attività per il trigger per ramo 1 e configurato come avevo prima. Ho fatto lo stesso alla succursale 2, tranne che ho messo l'attività SendReplyToReceive sotto la mia attività Se che convalida gli indirizzi corrispondenti.

Altri suggerimenti

Senza vedere il flusso di lavoro posso solo fare un paio di ipotesi, ma le cose che vorrei cercare sono:

  1. è la variabile ambito di una sequenza o qualcosa che è dentro di attività DoWhile? BTW non v'è alcun beneficio ti cambiarlo con un Mentre l'attività, l'unica differenza è che la condizione viene verificata all'inizio o alla fine.
  2. è la variabile utilizzata da qualche altra parte e si schiarì quel modo. Provare a rinominare e vedere ciò che dà.
  3. C'è persitence in gioco ed è il tipo non persisteva> Presumo sua una stringa o un Uri e entrambi dovrebbero essere a posto.
  4. C'è un problema con la correlazione ed è il messaggio Cancellati in fase di elaborazione da parte di un flusso di lavoro diverso? Mare che il CanCreateInstance è impostata su false.

provare a fare una classe ambito privato {get; set;} e vedere se il problema alza ancora la sua testa, questo è il meglio che posso fare a meno di vedere il codice sorgente attuale e da quello che hai descritto Non posso vedere eventuali problemi

.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top