As the title made you wonder already, shouldn't this be regarded as an exclusive or? The way I did understand the PerCall, each new request should create a new Service object, with a new set of variables, et cetera. So how is it actually possible that the lock on the file is still there?
Imagine, the file has not been closed appropriately during Request #1, shouldn't the object get disposed with the disposing of the huge Service object at the end of Request #1? Or is it possible that lock on the file is not in the hands of the Service object, but deep down in the inner Windows api mechanics, in a way, that with the ending of Request #1, the file lock still present (no correct close happened), the lock is still there? After having recycled the app pool, the lock has been gone, but shouldn't the setting of InstanceContextMode.PerCall have the same effect?
I would appreciate any technical explanation for this, well, phenomenon I have to label it. We can't call Andrew S. Tanenbaum, each time we can't handle this kind of problems, don't you agree? But I want to understand the inner circuit of these kind of issues.