VS 2010 ошибка «Значение для добавления было вне диапазона. Имя параметра: значение» - PullRequest
2 голосов
/ 03 августа 2011

У меня странная проблема.Мое веб-приложение выдает ошибку «Значение для добавления вышло за пределы диапазона Имя параметра: значение».Теперь это не каждый раз, когда я запускаю программу. Иногда показывает ошибку и иногда запускается без проблем (без изменений). Следы стека, приведенные ниже, ошибка не ясна (по крайней мере для меня).Кто-нибудь сталкивался с такой проблемой?

Сведения об ошибке

Значение для добавления было вне диапазона.Имя параметра: значение Описание: во время выполнения текущего веб-запроса произошло необработанное исключение.Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.

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 

enter image description here

Ответы [ 3 ]

2 голосов
/ 03 августа 2011

Просто угадайте: поскольку исключение, похоже, выдается из кода, который вы не контролируете, это не ваш код, который вызывает ошибку.Однако это могут быть настройки вашей системы.Например, по какой-то странной причине System.DateTime.Add(Double value, Int32 scale) вызывается с такими параметрами, что, например, MSDN сообщает ,

Результирующий DateTime меньше MinValue или больше MaxValue.

Возможно ли когда-нибудь установить на вашем компьютере невероятно высокое значение?Например, близко к 23:59:59.9999999, December 31, 9999.Или, может быть, низкое значение, близкое к 00:00:00.0000000, January 1, 0001.Поэтому компилятор по некоторым причинам выбирает текущую дату и должен добавить к ней некоторый промежуток времени, что приводит к вашей ошибке.

Просто дикая догадка, но, может быть ...

ОБНОВЛЕНИЕ

Код метода System.Web.Compilation.CodeDirectoryCompiler.GetCodeDirectoryAssembly можно найти здесь .В коде есть строка

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

Это единственное место, которое может вызвать такое исключение (если версия, на которую я смотрю, совпадает с вашей средой).Так что это дает больше голосов за странное время, установленное на вашем компьютере.

2 голосов
/ 03 августа 2011

Это может произойти, если вы пытаетесь присвоить значение 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 переменными ... но это было давным-давно. Поскольку вы не предоставляете достаточно информации о типе переменной и т. Д. (А изображение слишком маленькое, чтобы что-то разглядеть), я просто догадываюсь об этом на моей голове.

0 голосов
/ 05 августа 2011

Проблема решена. Просто изменил мои региональные настройки, настройки даты / времени на панели управления на некоторые случайные настройки, а затем вернул их обратно к исходным, после чего перезагрузил компьютер, и ошибка исчезла. Возможно, проблема с кодом GetCodeDirectoryAssembly, как упомянуто @Michael Sagalovich.Will расследовать для получения более подробной информации, если ошибка снова появляется:)

Спасибо всем

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...