【问题标题】:VS 2010 error "Value to add was out of range. Parameter name: value "VS 2010 错误“要添加的值超出范围。参数名称:值”
【发布时间】:2011-08-05 17:34:56
【问题描述】:

我遇到了一个奇怪的问题。我的 Web 应用程序抛出错误“要添加的值超出范围参数名称:值”。现在这不是我每次运行程序的时候。有时显示错误,有时运行没有问题(没有做任何更改)。错误下面给出的堆栈跟踪不清楚(至少对我来说)。有人遇到过这种问题吗?

错误详情

要添加的值超出范围。 参数名称:值 说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

Exception Details: System.ArgumentOutOfRangeException: Value to add was out of range.
Parameter name: value

Source Error: 

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.  

Stack Trace: 


[ArgumentOutOfRangeException: Value to add was out of range.
Parameter name: value]
   System.DateTime.Add(Double value, Int32 scale) +9388319
   System.Web.Compilation.CodeDirectoryCompiler.GetCodeDirectoryAssembly(VirtualPath virtualDir, CodeDirectoryType dirType, String assemblyName, StringSet excludedSubdirectories, Boolean isDirectoryAllowed) +8837703
   System.Web.Compilation.BuildManager.CompileCodeDirectory(VirtualPath virtualDir, CodeDirectoryType dirType, String assemblyName, StringSet excludedSubdirectories) +125
   System.Web.Compilation.BuildManager.CompileCodeDirectories() +319
   System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled() +248

[HttpException (0x80004005): Value to add was out of range.
Parameter name: value]
   System.Web.Compilation.BuildManager.ReportTopLevelCompilationException() +62
   System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled() +421
   System.Web.Compilation.BuildManager.CallAppInitializeMethod() +31
   System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +605

[HttpException (0x80004005): Value to add was out of range.
Parameter name: value]
   System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +9013676
   System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +97
   System.Web.HttpRuntime.ProcessRequestInternal(HttpWorkerRequest wr) +258




--------------------------------------------------------------------------------
Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.1 

【问题讨论】:

  • 你能复制粘贴帖子中的错误文本吗?
  • 它在DateTime.Add() 行崩溃了您在代码中的什么地方使用它?也发一下
  • @Michael Sagalovich :认为截图会更详细。不管怎样,请看下面的细节:
  • @giddy :我没有在代码中的任何地方使用该语句。甚至在解决方案中进行了快速搜索,但没有这样的行。我尝试在另一台 PC 上运行该项目,它在那里工作正常。
  • @Michael Sagalovich :编辑了带有错误文本的原始帖子。

标签: c# visual-studio-2010


【解决方案1】:

只是猜测:由于异常似乎是从您无法控制的代码中引发的,因此导致错误的不是您的代码。但是,这可能是您的系统设置。例如,出于某种奇怪的原因,System.DateTime.Add(Double value, Int32 scale) 被调用时使用了这样的参数,如MSDN states

生成的 DateTime 小于 MinValue 或大于 MaxValue。

您计算机上的时间现在是否有可能设置为某个难以置信的高值?例如,接近23:59:59.9999999, December 31, 9999。或者可能是低价值,接近00:00:00.0000000, January 1, 0001。因此,由于某些原因,编译器会选择当前日期并需要为其添加一些时间跨度,这会导致您的错误。

只是一个疯狂的猜测,但也许......

更新

System.Web.Compilation.CodeDirectoryCompiler.GetCodeDirectoryAssembly 方法的代码可以在here 找到。代码中有一行

DateTime waitLimit = DateTime.UtcNow.AddMilliseconds(3000); 

这是唯一可能引发此类异常的地方(如果我正在查看的版本与您的环境相同)。因此,它会为您计算机上设置的奇怪时间提供更多投票。

【讨论】:

  • 是的,我的系统设置可能会引发错误,但我检查了我的日期时间设置,一切似乎都很好。您认为原因可能是安装损坏吗?该代码在我的其他配置(Vista 32 位 - VS 专业 2010)上运行良好,但在 Win 7 32 位 -VS 专业 2010 上失败
  • 我会先编写一个功能完全相同的小型控制台应用程序:DateTime waitLimit = DateTime.UtcNow.AddMilliseconds(3000)Main 的某个地方,看看会发生什么,例如DateTime.UtcNow 是什么。这可能会提供线索。
  • 感谢您的建议。问题已解决。将尝试调查是否再次发生。:)
【解决方案2】:

如果您尝试分配的值为null,则可能会发生这种情况。尝试合并值

假设:

int i = value ?? 0; //if value is null, zero is assigned to i
MyClass _class = ValueClass ?? new MyClass(); //same as above, except it instantiates.
DateTime someDate = getChuckNorrisBirthDate() ?? DateTime.Now.Date(); // beware of chuck norris

我在DateTime 变量中看到过这个错误。但那是很久以前的事了。由于您没有提供有关变量类型等的足够信息(并且图像太小而无法辨认),我只是在猜测它。

【讨论】:

    【解决方案3】:

    问题已解决。只是将我的区域设置、控制面​​板中的日期/时间设置更改为一些随机设置,然后将它们恢复为原始设置,然后重新启动 PC,错误就消失了。问题可能与 @Michael Sagalovich 提到的 GetCodeDirectoryAssembly 代码有关。将调查如果错误再次弹出,请了解更多详细信息:)

    谢谢大家

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-26
      • 1970-01-01
      • 1970-01-01
      • 2019-11-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多