WCF does not create new threads. It uses threads from a thread pool to serve requests. Therefore, when the request begins, it pulls the stream from this pool to execute the request and, after its completion, returns the stream to the pool. The way WCF uses the streams below is an implementation detail you cannot rely on. You should never use Thread Static in ASP.NET/WCF to store state.
In ASP.NET you must use HttpContext.Items and in WCF OperationContext to store some state that will be available throughout the request.
Here's a good blog post, you can take a look at what a good way to abstract that illustrates.
source share