8

最近在 Azure 中部署的一个项目开始每天抛出两三个这样的异常。我的调查表明,这通常是由具有未来时间戳的程序集引起的,通常是由部署到其他时区的机器引起的(这是一个很好的资源)。在该应用程序上线的一年+之前,我们还没有遇到过这个问题,它收到的流量比少数例外情况所暗示的要多得多。

我在启用远程桌面的情况下重新部署并检查了我们的 dll 的时间戳以及 \Windows\Microsoft.NET 和 \Windows\assembly 目录的内容,但没有找到任何“未来”时间戳。在这一点上,我被困住了,我会很感激你的想法。

堆栈跟踪:

System.ArgumentOutOfRangeException:指定的参数超出了有效值的范围。参数名称: utcDate at System.Web.HttpCachePolicy.UtcSetLastModified(DateTime utcDate) at System.Web.HttpCachePolicy.SetLastModified(DateTime date) at System.Web.UI.Page.InitOutputCache(OutputCacheParameters cacheSettings) at System.Web.UI.Page .ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 在 System.Web.UI.Page.ProcessRequest() 在 System.Web.UI.Page.ProcessRequest(HttpContext context) 在 System.Web.Mvc.OutputCacheAttribute.OnResultExecuting(ResultExecutingContext filterContext) 在System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter 过滤器,ResultExecutingContext preContext,Func1 continuation) at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func1 续)在 System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func1 continuation) at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList1 个过滤器,ActionResult actionResult) 在 System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass27.b__24(IAsyncResult asyncResult) 在 System.Web.Mvc.AsyncController.<>c__DisplayClass19.b__14(IAsyncResult asyncResult) 在 System.Web.Mvc .Async.AsyncResultWrapper.<>c__DisplayClass4.b__3(IAsyncResult ar) at System.Web.Mvc.AsyncController.EndExecuteCore(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass4.b__3(IAsyncResult ar) at System .Web.Mvc.MvcHandler.<>c__DisplayClass6.<>c__DisplayClassb.b__4(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass4.b__3(IAsyncResult ar) at System.Web.HttpApplication.CallHandlerExecutionStep.System .Web.HttpApplication.IExecutionStep.Execute() 在 System.Web。HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

4

1 回答 1

0

时区问题在 Azure 环境中确实很头疼,所以我建议你添加一个启动任务并更改 Azure 环境的时区。我并不是说这会解决您的问题,但尝试一下不会有什么坏处吗?更改 Azure 环境的时区:

1) 另存tzutil /s "Pacific Standard Time"为 .cmd 并将文件包含到您的项目中。

2) 在文件的属性屏幕中,选择“始终复制”作为“复制到输出”选项,选择“无”作为构建操作。

3) 将以下内容添加到您的 ServiceDefinition 文件中:

<Startup>
    <Task commandLine="nameOfFileYouCreated.cmd" executionContext="elevated" />
</Startup>

4)当然,在您的项目中调整您的 DateTime 引用,您不必处理转换等。

于 2013-05-08T07:25:21.130 回答