I have a D300 and never had problems getting preset white balance work
straight away on any decent light. I always get the WB reading with auto
exposure, manual (de)focus, and the reference target filling the frame.
However, when the light is way off white, I get "no good". This a
limitation of the camera: if the light spectrum is extremely unbalanced
(say candle light, with too much red and almost no blue), the camera
would have to apply a very strong correction (hugely amplify the blue
channel) with warrantied bad outcome (too much blue noise).
In this kind of situation, I switch to manual Kelvin setting and I set
the color temperature to the minimum (2500 K on the D300). This gives an
undercorrected picture with a usually natural-looking warm cast.
BTW, here is a cool WB trick for when you want to keep a slight warm
cast under artificial light: Set WB to Kelvin mode, switch on live view,
and manually adjust the color temperature to your taste.