c# - Private property changing it's value, without it's setter being called (also cross-session). Assuming .NET error -


update future readers: if find text long: race condition due static variable. reading below showing how confusing can become debugging , overlooking static keyword. if experiencing similar behaviour check static first.

i debugging application, cannot find bug in code. class of master page has private property called greeting. property not cause trouble until 2 users on same server log out @ same time (within less 1 second). 1 user gets greeting meant other user (for example, if john , jane testing, both see "dear misses jane!"). so, debugging purposes implemented getter , setter property. both write value read or written trace.axd via httpcontext.current.trace.write(). seeing correct value set. in last get value of corresponding other user read.there 2 consecutive calls of getter return different values. there no call setter inbetween. property private, , code analysis showing, not referenced anywhere else. writing stack trace trace environment.stacktrace. code running expected. how can different error in .net itself?

    private static string _greeting = string.empty;     private static string greeting     {                 {             system.web.httpcontext.current.trace.write("debug", "mymasterpage.greeting__get(): " + _greeting);             system.web.httpcontext.current.trace.write("debug", "mymasterpage.greeting__get() stacktrace: " + environment.stacktrace);             return _greeting;         }         set         {             _greeting = value;             system.web.httpcontext.current.trace.write("debug", "mymasterpage.greeting__set(): " + _greeting);             system.web.httpcontext.current.trace.write("debug", "mymasterpage.greeting__set() stacktrace: " + environment.stacktrace);         }     } 

excerpt of trace (with pseudonyms):

 debug  mymasterpage.greeting__get(): dear misses jane    debug  mymasterpage.greeting__get(): dear mister john 

the problem fact variable static , hence when 1 user logs in , value set, user logs in , changes it. know, static variable variable shared among threads (requests) , there few cases want declare static variable on web application.


Comments

Popular posts from this blog

assembly - 8086 TASM: Illegal Indexing Mode -

Java, LWJGL, OpenGL 1.1, decoding BufferedImage to Bytebuffer and binding to OpenGL across classes -

javascript - addthis share facebook and google+ url -