Ricavare id Richiesta o process id

venerdì 06 novembre 2009 - 10.55

livio Profilo | Newbie



Ciao,

Devo loggare un web service, volevo aggiungere anche chi fa la richiesta ed un'identificativo del processo in modo da poter seguire le diverse chiamate al web service.

Chi fa la richiesta dovrei averlo trovato usando
HttpContext.Current.Request.UserHostAddress

Mi manca trovare un id del processo... ho porovato con
System.Threading.Thread.CurrentThread.ManagedThreadId

ma mi da sempre lo stesso identificativo.... Ci sarebbe la sessione ma è sempre a Null.... C'e' qualche altro modo per trovare un identificativo della sessione???


Grazie Livio

Pinky Profilo | Junior Member

WebService usa HTTP come protocollo di comunicazione.
Questo è stateless, ovvero ogni richiesta del browser al server è una cosa a se stante.
Con UserHostAddress ottieni l'IP del client.
Direi che questo ti da un identificativo sufficientemente valido per tenere traccia delle richieste al servizio.

Per "Chi fa la richiesta" intendi un utente loggato?
Per "identificativo del processo" cosa intendi?


"C'e' qualche altro modo per trovare un identificativo della sessione???"
Un modo che mi viene in mente (per uso anonimo del servizio):
Potresti creare un metodo GetLoginID() che ritorna un GUID creato al momento (e memorizzato su DB).
Modificando i metodi del servizio in modo che accettino come parametro anche il Guid dato al client, puoi seguire/loggare/bloccare tutte le richieste.

Se il servizio richiede login usi il metodo GetLoginID(username, password) per dare al client il SUO identificativo.
Poi come sopra nei metodi ricevi l'identificativo cosicchè puoi anche reagire in modo diverso in base all'utente (permessi, ruoli, ecc...).

Chiaramente le due cose (anonimo e loggato) possono bene vivere insieme.

Non so (e non credo) ci sia qualcosa di preconfezionato che simuli la Session delle pagine web.
Esiste WSS (Secure Web Service) che però credo trasmetta i dati urtente (loggato) tramite header ed usa HTTPS ma ha lo scopo di garantire la sicurezza della comunicazione, non tracciarla.

Spero che con le indicazioni che ti ho dato tu sia in grado di ottenere il tuo scopo.

Ciao
Alessandro

livio Profilo | Newbie

>WebService usa HTTP come protocollo di comunicazione.
>Questo è stateless, ovvero ogni richiesta del browser al server
>è una cosa a se stante.
>Con UserHostAddress ottieni l'IP del client.
>Direi che questo ti da un identificativo sufficientemente valido
>per tenere traccia delle richieste al servizio.

Sicuramente so chi mi ha fatto la richiesta ma visto che l'utente potrebbe chiamarlo più di una volta, non vorrei mai che ci fossero degli accavallamenti nelle varie funzione che danno il risultato del calcolo fatto dal web service e speravo si potesse trovare in automatico una specie di process id o un identificativo in modo che nei log scrivevo: macchina richiedente - identificativo del processo o della chiamata del web service....





>
>Ciao
>Alessandro


Grazie Mille!
Livio
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5