我面临一个奇怪的问题。我的Web应用程序抛出错误“要添加的值超出范围参数名称:值”。现在这不是每次我运行程序。有时显示错误,有时运行没有问题(没有做任何更改)。错误下面给出的堆栈跟踪不清楚(至少对我而言)。有人遇到过这种问题吗?
要添加的值超出范围。 参数名称:value 描述:执行当前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
答案 0 :(得分: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
个变量中看到过这个错误..但是很久以前。由于你没有提供关于变量等类型的足够信息(而且图像太小而无法辨认任何东西),我只是在脑海中猜它。
答案 1 :(得分:2)
猜测:由于异常似乎是从您无法控制的代码中抛出的,因此导致错误的不是您的代码。但是,这可能是您的系统设置。例如,由于一些奇怪的原因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);
这是唯一可以抛出此类异常的地方(如果我正在查看的版本与您的环境相同)。因此,它会为您计算机上设置的奇怪时间提供更多选票。
答案 2 :(得分:0)
问题解决了。刚刚将我的区域设置,控制面板中的日期/时间设置更改为一些随机设置,然后将它们恢复为原始状态,然后重新启动PC并且错误消失。问题可能是@Michael Sagalovich提到的GetCodeDirectoryAssembly代码。将调查如果错误再次弹出,请获取更多详细信息:)
全部谢谢