Một dự án được triển khai trong Azure gần đây đã bắt đầu ném hai hoặc ba trong số các trường hợp ngoại lệ này mỗi ngày. Cuộc điều tra của tôi cho thấy rằng điều này thường do các hội đồng có dấu thời gian trong tương lai gây ra, thường là do triển khai tới các máy trong các múi giờ khác (this was a good resource). Chúng tôi chưa gặp phải vấn đề này trước đó trong năm + rằng ứng dụng đã hoạt động và nó nhận được nhiều lưu lượng truy cập hơn số lượng ngoại lệ sẽ đề xuất.ArgumentOutOfRangeException trong Azure từ System.Web.HttpCachePolicy.UtcSetLastModified (DateTime utcDate)
Tôi triển khai lại với máy tính từ xa được bật và kiểm tra dấu thời gian của các tệp dll và nội dung của thư mục \ Windows \ Microsoft.NET và \ Windows \ assembly và không tìm thấy dấu thời gian "trong tương lai". Tại thời điểm này tôi bị mắc kẹt, và sẽ biết ơn ý tưởng.
Stack Trace:
System.ArgumentOutOfRangeException: Được chỉ định tham số đã được ra khỏi phạm vi của các giá trị hợp lệ. Tên Parameter: utcDate tại System.Web.HttpCachePolicy.UtcSetLastModified (DateTime utcDate) tại System.Web.HttpCachePolicy.SetLastModified (ngày DateTime) tại System.Web.UI.Page.InitOutputCache (OutputCacheParameters cacheSettings) tại hệ thống. Web.UI.Page.ProcessRequest (Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) tại System.Web.UI.Page.ProcessRequest() tại System.Web.UI.Page.ProcessRequest (HttpContext context) tại System.Web.Mvc. OutputCacheAttribute.OnResultExecuting (ResultExecutingContext filterContext) tại System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter (Bộ lọc IResultFilter, ResultExecutingContext preContext, Func
1 continuation) at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func
1 liên tục ation) tại System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter (Bộ lọc IResultFilter, ResultExecutingContext preContext, Func1 continuation) at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList
1 bộ lọc, ActionResult actionResult) tại System.Web.Mvc.Async.AsyncControllerActionInvoker. <> c__DisplayClass27.b__24 (IAsyncResult asyncResult) tại System.Web.Mvc.AsyncController. <> c__DisplayClass19.b__14 (IAsyncResult asyncResult) tại System.Web.Mvc.Async.AsyncResultWrapper. <> c__DisplayClass4.b__3 (IAsyncResult ar) tại System.Web.Mvc.AsyncController.EndExecuteCore (IAsyncResult asyncResult) tại System.Web.Mvc.Async.AsyncResultWrapper. <> c__DisplayClass4.b__3 (IAsyncResult ar) tại System.Web.Mvc.MvcHandler. <> c__DisplayClass6. <> c__DisplayClassb.b__4 (IAsyncResult asyncResult) tại System.Web.Mvc.Async.AsyncResultWrapper. <> c__DisplayClass4.b__3 (IAsyncResult ar) tại System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() tại System.Web.HttpApplication.ExecuteStep (IExecutionStep bước, Boolean & completedSynchronously)
tôi m thấy cùng một vấn đề. Tôi đã xem mã System.Web.HttpCachePolicy và System.Web.UI.Page (thông qua SSCLI) và thấy rằng điều này là không thể. Ngoại lệ đó bị ném khi bạn thử đặt ngày sửa đổi cuối cùng thành ngày trong tương lai (lớn hơn DateTime.UtcNow). Điều này sẽ không bao giờ xảy ra khi khung công tác sử dụng HttpContext.Timestamp, được đặt thành DateTime.UtcNow khi bắt đầu yêu cầu. Một lời giải thích có thể có thể là NTP (đồng bộ hóa thời gian) khởi động trong khi yêu cầu đang được xử lý? –
Bạn có lưu trữ bất kỳ dữ liệu nào trong bộ nhớ bảng hay không, Xem liệu Thời gian có đúng định dạng với thời gian UTC hay không. Đồng thời kiểm tra Chuyển đổi ngày giờ thành chuỗi và kiểm tra nó – user145610