Discussione:
Eseguire un metodo ad ogni richiesta ricevuta dal servizio
(troppo vecchio per rispondere)
Mattia
2008-10-10 09:47:04 UTC
Permalink
Ciao a tutti,
sto (imparando) sviluppando un server WCF.

Se il mio servizio è definito così:

[ServiceBehavior(InstanceContextMode =
InstanceContextMode.PerSession)]
public class MyService : IService
{
Boolean IService.Metodo1(...)
{
....
}
Boolean IService.Metodo2(...)
{
....
}
}

Come posso far eseguire un metodo di controllo prima dell'esecuzione
effettiva di ogni metodo di servizio richiesto? E' possibile non
mettere la chiamata all'interno al metodo di controllo
nell'implementazione di Metodo1 e Metodo2 (ovviamente i Metodi sono
più di 2 nel mio progetto)?

Grazie
Mattia
Corrado Cavalli [MVP]
2008-10-10 12:45:16 UTC
Permalink
C'ho capito poco, ma forse quello che ti serve è l'attributo IsInitiating
http://msdn.microsoft.com/en-us/library/system.servicemodel.operationcontractattribute.isinitiating.aspx
--
Corrado Cavalli [Microsoft .NET MVP-MCP]
UGIdotNET - http://www.ugidotnet.org
Weblog: http://blogs.ugidotnet.org/corrado/
Mattia
2008-10-10 15:25:39 UTC
Permalink
Non era quello che intendevo...ma sembra meglio!

Grazie mille
Mattia
C'ho capito poco, ma forse quello che ti serve è l'attributo IsInitiatinghttp://msdn.microsoft.com/en-us/library/system.servicemodel.operation...
--
Corrado Cavalli [Microsoft .NET MVP-MCP]
UGIdotNET -http://www.ugidotnet.org
Weblog:http://blogs.ugidotnet.org/corrado/
Alessandro Scardova
2008-10-10 16:14:53 UTC
Permalink
"Mattia" wrote...
[ServiceBehavior(InstanceContextMode =
InstanceContextMode.PerSession)]
Come posso far eseguire un metodo di controllo prima dell'esecuzione
effettiva di ogni metodo di servizio richiesto?
Se usi PerSession (che è il default) puoi chiamare due metodi di fila.
Potresti lato client fare un helper che ti dia il client già inizializzato.

http://msdn.microsoft.com/en-us/library/ms733040.aspx

Ricordati il Close()!

Ciao.
--
Alessandro Scardova
UGIdotNET - http://www.ugidotnet.org
Blog - http://blogs.ugidotnet.org/allePalle_blog
Alessandro Scardova
2008-10-10 17:05:21 UTC
Permalink
"Alessandro Scardova" wrote in message...
"Mattia" wrote...
[ServiceBehavior(InstanceContextMode =
InstanceContextMode.PerSession)]
Come posso far eseguire un metodo di controllo prima dell'esecuzione
effettiva di ogni metodo di servizio richiesto?
Scusa, ho interpetato male la tua domanda :(

Se ti servono le session devi perforza mettere IsIntiating=false a tutti i
metodi tranne al metodo di controllo che avrà IsIntiating=true
Se non ti servono le session tanto vale che metti
InstanceContextMode.PerCall questo modo il costruttore del servizio viene
caricato ad ogni richiesta.

IMHO

Ciao.
--
Alessandro Scardova
UGIdotNET - http://www.ugidotnet.org
Blog - http://blogs.ugidotnet.org/allePalle_blog
Loading...