2016-04-19 1 views
3

Я пишу небольшой веб-интерфейс, который выходит на передний план установки System Center Orchestrator. Предполагается, что он попадет в рабочую книгу и вернет некоторые данные - эта часть в основном неважна.ArgumentOutOfRangeException (время UTC, представленное, когда применяется смещение, должно быть в диапазоне от 0 до 10000.) С OData/SC Orchestrator

код пытается начать работу runbook, чтобы получить некоторые данные обратно, используя образец кода (и заменял в моих требований) от https://msdn.microsoft.com/en-us/library/hh921685.aspx

Единственные линии я Изменились ссылки на моей Orchestrator, то GUID рабочей среды и параметры рабочей среды.

Эта линия бросает исключение в названии:

context.SaveChanges(); 

, который имеет эту трассировку стеки, показывая ошибку, кажется, происходящим где-то в OData царства вещей, превзойдя мой код:

[ArgumentOutOfRangeException: The UTC time represented when the offset is applied must be between year 0 and 10,000. 
Parameter name: offset] 
    System.DateTimeOffset.ValidateDate(DateTime dateTime, TimeSpan offset) +14215620 
    System.DateTimeOffset..ctor(DateTime dateTime) +56 
    Microsoft.Data.OData.Atom.EpmSyndicationWriter.CreateDateTimeStringValue(Object propertyValue, ODataWriterBehavior writerBehavior) +144 
    Microsoft.Data.OData.Atom.EpmSyndicationWriter.WriteEntryEpm(EntryPropertiesValueCache epmValueCache, IEdmEntityTypeReference entityType) +652 
    Microsoft.Data.OData.Atom.EpmSyndicationWriter.WriteEntryEpm(EpmTargetTree epmTargetTree, EntryPropertiesValueCache epmValueCache, IEdmEntityTypeReference type, ODataAtomOutputContext atomOutputContext) +80 
    Microsoft.Data.OData.Atom.ODataAtomWriter.EndEntry(ODataEntry entry) +627 
    Microsoft.Data.OData.ODataWriterCore.<WriteEndImplementation>b__16() +168 
    Microsoft.Data.OData.ODataWriterCore.InterceptException(Action action) +121 
    Microsoft.Data.OData.ODataWriterCore.WriteEndImplementation() +69 
    Microsoft.Data.OData.ODataWriterCore.WriteEnd() +40 
    System.Data.Services.Client.ODataWriterWrapper.WriteEnd(ODataEntry entry, Object entity) +47 
    System.Data.Services.Client.Serializer.WriteEntry(EntityDescriptor entityDescriptor, IEnumerable`1 relatedLinks, ODataRequestMessageWrapper requestMessage) +485 
    System.Data.Services.Client.BaseSaveResult.CreateRequestData(EntityDescriptor entityDescriptor, ODataRequestMessageWrapper requestMessage) +117 
    System.Data.Services.Client.BaseSaveResult.CreateChangeData(Int32 index, ODataRequestMessageWrapper requestMessage) +136 
    System.Data.Services.Client.SaveResult.CreateNonBatchChangeData(Int32 index, ODataRequestMessageWrapper requestMessage) +224 
    System.Data.Services.Client.SaveResult.CreateNextChange() +174 
    System.Data.Services.Client.DataServiceContext.SaveChanges(SaveChangesOptions options) +178 
    System.Data.Services.Client.DataServiceContext.SaveChanges() +37 
    S3Tools.RunbookOperations.GetClusters(String site) in [redacted]\RunbookOps.cs:58 

Я просмотрел The UTC time represented when the offset is applied must be between year 0 and 10,000. Parameter name: offset и UTC time represented when the offset is applied must be between year 0 and 10,000 error, и он выглядит подозрительно подобным образом (особенно последний), который вызывает https://support.microsoft.com/en-us/kb/2346777, но исправление, предоставленное MS, не относится к Windows 10 (моя рабочая статистика on) или Windows 2012 R2 (веб-сервер).

Я не хочу менять либо свой часовой пояс (UTC + 10), либо сервер для проверки, прежде чем увидеть, есть ли у кого-нибудь какие-либо идеи или кто-то сталкивался с этим раньше.

У меня есть сценарии powershell, которые вполне способны генерировать эти задания (хотя они не могут использовать служебные ссылки, которые вы должны сгенерировать запрос вручную). Поэтому я не склонен полагать, что что-то виновато, кроме CLR.

Подводный вопрос: Кто-нибудь столкнулся с этим и зафиксировал его?

+0

Сегодня утром я решил попробовать изменить временные точки рабочей станции, чтобы узнать, не имеет значения. Это не так. Я пробовал как UTC, так и UTC-12. Поэтому я не думаю, что это результат этого. – Kruft

+0

Я только что видел [эту техническую статью] (https://social.technet.microsoft.com/Forums/en-US/e248ecef-9561-4409-8a3f-8299bcc721a4/exception-using-code-sample-in- utc-1-timezone? forum = scoqik), который может работать. Дайте ему вихрь. – Kruft

ответ

1

Добавление этих двух линий облегчат вопрос:

job.CreationTime = DateTime.Now; 
job.LastModifiedTime = DateTime.Now; 

Или, конечно, для любого разумно допустимого значения DateTime.

Похоже, что при использовании кода примера, упомянутого в вопросе о том, что пустой объект Job не заполняет свойства CreationTime или LastModifiedTime, и в результате он передает это. Когда время используется в расчете, они приводят к периоду времени, который равен < 0 или> 10 000 лет.

Решение было в этом Technet теме форума: https://social.technet.microsoft.com/Forums/en-US/e248ecef-9561-4409-8a3f-8299bcc721a4/exception-using-code-sample-in-utc-1-timezone?forum=scoqik

с ответом по JoakimJohansson.

Смежные вопросы