最近部署在Azure中的项目开始每天抛出两个或三个这样的异常.我的调查显示,这通常是由具有未来时间戳的程序集引起的,通常是由部署到其他时区的计算机引起的(这是一个很好的资源).我们之前没有遇到过这个问题+应用程序已经存在,并且它收到的流量远远超过少数例外情况.
我在启用远程桌面的情况下重新部署并检查了我们的dll的时间戳以及\ Windows\Microsoft.NET和\ Windows\assembly目录的内容,并且没有找到任何"未来"时间戳.在这一点上,我被困住了,并且会对这些想法感激不尽.
堆栈跟踪:
System.ArgumentOutOfRangeException:指定的参数超出了有效值的范围.System.Web.UI.Page上的System.Web.UI.Page.InitOutputCache(OutputCacheParameters cacheSettings)中System.Web.HttpCachePolicy.SetLastModified(DateTime日期)的System.Web.HttpCachePolicy.UtcSetLastModified(DateTime utcDate)的参数名称:utcDate位于System.Web.Mvc.OutputCacheAttribute.OnResultExecuting(ResultExecutingContext filterContext)的System.Web.UI.Page.ProcessRequest(HttpContext context)上的System.Web.UI.Page.ProcessRequest()处于.ProcessRequest(布尔includeStagesBeforeAsyncPoint,布尔includeStagesAfterAsyncPoint) System.Web.Mvc
1 continuation) at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func上的System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter过滤器,ResultExecutingContext preContext,Func1 continuation) at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList1过滤器,ActionResult actionResult)中的System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter (IResultFilter过滤器,ResultExecutingContext preContext,Func 1 continuation) System.Web.Mvc.AsyncController上的.Async.AsyncControllerActionInvoker.<> c__DisplayClass27.b__24(IAsyncResult asyncResult).<> c__DisplayClas s19.b__14(IAsyncResult asyncResult)位于System.Web.Mvc.Async的System.Web.Mvc.Async.AsyncResultWrapper.<> c__DisplayClass4.b__3(IAsyncResult ar)处的System.Web.Mvc.AsyncController.EndExecuteCore(IAsyncResult asyncResult). System.Web.Mvc.Async.AsyncResultWrapper的System.Web.Mvc.MvcHandler.<> c__DisplayClass6.<> c__DisplayClassb.b__4(IAsyncResult asyncResult)中的AsyncResultWrapper.<> c__DisplayClass4.b__3(IAsyncResult ar).<> c__DisplayClass4.b__3( IAsyncResult ar)System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean&completedSynchronously)上的System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
时区问题在Azure环境中确实是一个令人头疼的问题,因此我建议您添加启动任务并更改Azure环境的时区。我并不是说这会解决您的问题,但尝试一下也没什么坏处,不是吗?要更改 Azure 环境的时区:
1) 另存tzutil /s "Pacific Standard Time"为 .cmd 并将该文件包含到您的项目中。
2) 在文件的属性屏幕中,选择“始终复制”作为“复制到输出”选项,选择“无”作为构建操作。
3) 将以下内容添加到您的 ServiceDefinition 文件中:
<Startup>
<Task commandLine="nameOfFileYouCreated.cmd" executionContext="elevated" />
</Startup>
Run Code Online (Sandbox Code Playgroud)
4)当然,调整项目中的 DateTime 引用,您不必处理转换等。
| 归档时间: |
|
| 查看次数: |
696 次 |
| 最近记录: |