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
Post a Comment