我正在编写一个小型Web界面,它位于System Center Orchestrator设置的前面。它应该会击中Runbook并获得一些数据 - 这部分在很大程度上并不重要。
代码正试图启动一个Runbook作业,使用https://msdn.microsoft.com/en-us/library/hh921685.aspx
中的示例代码(并根据我的要求进行修改)来获取一些数据我改变的唯一行是对我自己的Orchestrator,Runbook GUID和Runbook参数的引用。
此行抛出标题中的异常:
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(我的工作站)或Windows 2012 R2(网络服务器)。
我不愿意改变我的时区(UTC + 10)或服务器进行测试,然后才能看到是否有任何想法或之前遇到过这个想法。
我有PowerShell脚本,它们能够生成这些作业(尽管它们不能使用服务引用来手动生成请求)。所以除了CLR之外,我不会相信任何事情都有问题。
底线问题:有没有人遇到过这个问题并修好了?
答案 0 :(得分:1)
添加这两行可以缓解这个问题:
Dim rngCell as Word.Range
Set rngCell = tbl.Cell(nRow, 2).Range
With rngCell
'Go into the cell, rather than the entire cell
.Collapse wdCollapseStart
'other stuff
.Text = captionStr & vbCr
.Font.Bold = True
'Move to the end of the range
.Collapse wdCollapseEnd
'Doing this in a table cell moves to the next cell, so one back
.MoveEnd wdCharacter, -1
'Now the rest of the content
.Text = bodyStr
.Font.Bold = False
End With
当然,或者任何合理有效的DateTime值。
所以似乎在使用问题中提到的示例代码时,空Job对象不会填充CreationTime或LastModifiedTime属性,因此它会通过它。当在计算中使用时间时,它们导致的时间跨度<1。 0或&gt;一万年。
解决方案是在这个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的回答。