【发布时间】:2019-08-02 16:03:20
【问题描述】:
自从我将代码移植到 SharePoint 2010 以来,我一直在 ULS 中收到这条奇怪的消息。
这是消息:
w3wp.exe (0x1320)
0x1168 SharePoint 基础
一般
90hv
出乎意料检测到以前关闭的 SPWeb 对象使用了 SPRequest。请在完成所有从 SPWeb 对象获取的对象后关闭它们,但之前不要。
堆栈跟踪:
在 Microsoft.SharePoint.SPWorkItem.FetchData()
在 Microsoft.SharePoint.SPWorkItem.retrieveSchema(架构 schemaIndex)
在 Microsoft.SharePoint.SPWorkItem.get_SiteId()
在 Microsoft.SharePoint.SPWorkItem.Delete()
在 Microsoft.SharePoint.Workflow.SPWinOeHostServices.WorkItemDequeue(Transaction txn, Object[] transData)
在 Microsoft.SharePoint.Workflow.SPPendingWorkBatch.Commit(事务事务,ICollection 项)
在 System.Workflow.Runtime.WorkBatch.PendingWorkCollection.Commit(事务事务)
在 System.Workflow.Runtime.WorkBatch.Commit(事务事务)
在 System.Workflow.Runtime.Hosting.WorkflowCommitWorkBatchService.CommitWorkBatch(CommitWorkBatchCallback commitWorkBatchCallback)
在 System.Workflow.Runtime.Hosting.DefaultWorkflowCommitWorkBatchService.CommitWorkBatch(CommitWorkBatchCallback commitWorkBatchCallback)
在 System.Workflow.Runtime.WorkflowExecutor.CommitTransaction(Activity activityContext)
在 System.Workflow.Runtime.WorkflowExecutor.Persist(活动动态活动,布尔解锁,布尔需要补偿)
在 System.Workflow.Runtime.WorkflowExecutor.System.Workflow.ComponentModel.IWorkflowCoreRuntime.PersistInstanceState(活动活动)
在 System.Workflow.ComponentModel.Activity.MarkClosed()
在 System.Workflow.ComponentModel.Activity.ReleaseLockOnStatusChange(IActivityEventListener1 eventListener)1.ActivityExecutorDelegateOperation.Run(IWorkflowCoreRuntime workflowCoreRuntime)
at System.Workflow.ComponentModel.FaultAndCancellationHandlingFilter.SafeReleaseLockOnStatusChange(ActivityExecutionContext context)
at System.Workflow.ComponentModel.FaultAndCancellationHandlingFilter.OnEvent(Object sender, ActivityExecutionStatusChangedEventArgs e)
at System.Workflow.ComponentModel.ActivityExecutorDelegateInfo
在 System.Workflow.Runtime.Scheduler.Run()
在 System.Workflow.Runtime.WorkflowExecutor.RunScheduler()
在 System.Workflow.Runtime.WorkflowExecutor.RunSome(忽略对象)
在 System.Workflow.Runtime.Hosting.DefaultWorkflowSchedulerService.WorkItem.Invoke(WorkflowSchedulerService 服务)
在 System.Workflow.Runtime.Hosting.ManualWorkflowSchedulerService.RunOne(Guid workflowInstanceId)
在 System.Workflow.Runtime.Hosting.ManualWorkflowSchedulerService.RunWorkflow(Guid workflowInstanceId)
在 Microsoft.SharePoint.Workflow.SPWinOeHostServices.Send(SPWorkflow 工作流、SPWinOeWorkflow winoeworkflow、SPWorkflowEvent e)
在 Microsoft.SharePoint.Workflow.SPWinOeEngine.RunWorkflow(SPWorkflowHostService 主机、SPWorkflow 工作流、Collection1 events, TimeSpan timeOut)1 事件、SPWorkflowRunOptionsInternal runOptions)
at Microsoft.SharePoint.Workflow.SPWorkflowManager.RunWorkflowElev(SPWorkflow workflow, Collection
在 Microsoft.SharePoint.Workflow.SPWorkflowManager.StartWorkflowElev(对象上下文、SPWorkflowAssociation 关联、DateTime elevationTimeUtc、SPWorkflowEvent startEvent、SPWorkflowRunOptions runOptions)
在 Microsoft.SharePoint.Workflow.SPWorkflowAutostartEventReceiver.c_DisplayClass1.b_0(SPSite superUserSite, SPWeb superUserWeb)
在 Microsoft.SharePoint.SPSecurity.c_DisplayClassf.b_e()
在 Microsoft.SharePoint.SPSecurity.c_DisplayClass4.b_2()
在 Microsoft.SharePoint.Utilities.SecurityContext.RunAsProcess(CodeToRunElevated secureCode)
在 Microsoft.SharePoint.SPSecurity.RunWithElevatedPrivileges(WaitCallback secureCode,对象参数)
在 Microsoft.SharePoint.SPSecurity.RunWithElevatedPrivileges(CodeToRunElevated secureCode)
在 Microsoft.SharePoint.Workflow.SPWorkflowAutostartEventReceiver.AutoStartWorkflow(SPItemEventProperties 属性,布尔 bCreate,布尔 bChange,AssocType atyp)
在 Microsoft.SharePoint.Workflow.SPWorkflowAutostartEventReceiver.ItemUpdated(SPItemEventProperties 属性)
在 Microsoft.SharePoint.SPEventManager.RunItemEventReceiver(SPItemEventReceiver 接收器,SPUserCodeInfo userCodeInfo,SPItemEventProperties 属性,SPEventContext 上下文,字符串 receiverData)
在 Microsoft.SharePoint.SPEventManager.RunItemEventReceiverHelper(对象接收器、SPUserCodeInfo userCodeInfo、对象属性、SPEventContext 上下文、字符串接收器数据)
在 Microsoft.SharePoint.SPEventManager.c_DisplayClassc`1.b_6()
在 Microsoft.SharePoint.SPSecurity.RunAsUser(SPUserToken userToken, Boolean bResetContext, WaitCallback code, Object param)
在 Microsoft.SharePoint.SPEventManager.InvokeEventReceivers[ReceiverType](SPUserToken userToken、Guid tranLockerId、RunEventReceiver runEventReceiver、对象接收器、对象属性、布尔检查取消)
在 Microsoft.SharePoint.SPEventManager.InvokeEventReceivers[ReceiverType](字节 [] userTokenBytes、Guid tranLockerId、RunEventReceiver runEventReceiver、对象接收器、对象属性、布尔检查取消)
在 Microsoft.SharePoint.SPEventManager.HandleEventCallback[ReceiverType,PropertiesType](对象回调数据)
在 Microsoft.SharePoint.Utilities.SPThreadPool.WaitCallbackWrapper(对象状态)
在 System.Threading.ExecutionContext.runTryCode(Object userData)
在 System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode 代码、CleanupCode backoutCode、对象 userData)
在 System.Threading.ExecutionContext.Run(ExecutionContextexecutionContext, ContextCallback 回调, 对象状态)
在 System.Threading._ThreadPoolWaitCallback.PerformWaitCallbackInternal(_ThreadPoolWaitCallback tpWaitCallBack)
在 System.Threading._ThreadPoolWaitCallback.PerformWaitCallback(对象状态)
每当我运行工作流时都会出现此消息,它似乎对工作流没有任何有害影响。
请让我知道你们知道的任何事情。
【问题讨论】:
-
正如错误消息所述,当您在关闭/处置后尝试使用 SPWeb 实例时,通常会出现这种错误。您是否以任何方式在工作流代码中创建 SPWeb 实例?您的问题可能是由代码中某处重用的实例引起的。也就是说,有报告称 Document Set 类在 SP 2010 上导致了相同的错误,因此它可能是 Microsoft 类中的错误。
-
我在 'using' 结构中使用 SPWeb 和 SPSite,所以这不应该有问题。此外,我还在工作流属性中使用而不是处置网站和站点属性。我很喜欢你关于这个错误的事情。叹息...我猜想更多的日志阅读。
-
堆栈跟踪似乎表明已关闭的实例在 FetchData() SPWorkItem 方法中被重用。问题是它没有说明实例首先关闭的位置。应该有一个注册表项可以跟踪未关闭的 SPRequest 对象,不知道是否也可以。
-
我决定将此视为一个奇怪的内部错误或其他东西。如果我得到一些东西,我会更新这个。
标签: sharepoint sharepoint-2010