DateTime.Now rzuca wyjątek
Dostaję wyjątek rzucony na DateTime.Now na naszym serwerze z uruchomionymi kilkoma stronami internetowymi. To wydarzyło mi się już dwa razy w ciągu ostatnich 3 dni. Naprawdę dziwne. Zastanawiam się, czy stało się tak w przypadku najnowszej witryny Windows Update i czy ktoś z was widział podobne zachowanie.
Wyjątkiem jest:
<code>BASE EXCEPTION: TYPE: System.ArgumentOutOfRangeException MESSAGE: Value to add was out of range. Parameter name: value STACK TRACE: at System.DateTime.Add(Double value, Int32 scale) at System.TimeZoneInfo.TransitionTimeToDateTime(Int32 year, TransitionTime transitionTime) at System.TimeZoneInfo.GetDaylightTime(Int32 year, AdjustmentRule rule) at System.TimeZoneInfo.GetIsDaylightSavingsFromUtc(DateTime time, Int32 Year, TimeSpan utc, AdjustmentRule rule, Boolean& isAmbiguousLocalDst) at System.TimeZoneInfo.GetDateTimeNowUtcOffsetFromUtc(DateTime time, Boolean& isAmbiguousLocalDst) at System.DateTime.get_Now() at (my code).FrontEnd.FrontEndPage.Page_Load(Object sender, EventArgs e) in (my code file)\code\presentation\FrontEndPage.cs:line 118 at (my code).purchase.Page_Load(Object sender, EventArgs e) in (my code file)\purchase.aspx.cs:line 94 at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) at System.Web.UI.Control.OnLoad(EventArgs e) at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) </code>
Kod, w którym to się dzieje, jest pierwszym wierszem instrukcji if:
<code>HttpCookie loggedIn = Request.Cookies[Config.Instance.LoggedInCookieName]; if (loggedIn != null) { loggedIn.Expires = DateTime.Now.AddHours(4); Response.Cookies.Add(loggedIn); } </code>
Chociaż istnieje tam AddHours i wyjątek dotyczy DateTime.Add, nie wierzę, że ma to coś wspólnego z AddHours, ale jest spowodowane wywołaniem Now, jak widać na śladzie stosu.
Serwer, na którym jestem, działa pod kontrolą systemu Windows Server 2003 i działa w języku angielskim (Wielka Brytania).
Dzięki za pomoc.