Wcf 尝试使用CRM SOAP端点时偶尔会抛出;“用户id无效”;
我们有一个内部客户关系管理系统,具有汇总13。一些表单需要填充来自多个来源的外部数据,并且需要预处理。为此,我们开发了一个自定义WCF服务,该服务与CRM运行在同一台服务器上,作为CRM网站中的虚拟应用程序托管在IIS中(以避免跨域脚本问题),并将REST端点公开给在CRM表单中运行的javascript。javascript发出请求,服务收集和处理数据,然后用一些漂亮的简单JSON回复javascript 由于我们需要的一些数据来自CRM本身,我们认为我们也应该让服务收集这些数据(使用CRM的SOAP端点),而不是直接从javascript向CRM web服务发出请求。我们在IIS中设置了直通身份验证,因此我们的自定义应用程序在模拟登录到CRM的用户的同时向CRM发出请求 大多数时候,这一切都非常有效。然而,一旦我们有了更多的测试人员,我们就开始注意到有时CRM会停止为某些用户回复我们的服务,并抛出异常。如果该用户关闭浏览器并重新打开,然后尝试完全相同的操作,则所有操作都会重新开始工作。我在CRM服务器上打开了跟踪,发现发生这种情况时,CRM正在记录“CRM异常:消息:用户Id无效,错误代码:-2147214049”。完整跟踪如下:Wcf 尝试使用CRM SOAP端点时偶尔会抛出;“用户id无效”;,wcf,authentication,soap,iis-7,dynamics-crm-2011,Wcf,Authentication,Soap,Iis 7,Dynamics Crm 2011,我们有一个内部客户关系管理系统,具有汇总13。一些表单需要填充来自多个来源的外部数据,并且需要预处理。为此,我们开发了一个自定义WCF服务,该服务与CRM运行在同一台服务器上,作为CRM网站中的虚拟应用程序托管在IIS中(以避免跨域脚本问题),并将REST端点公开给在CRM表单中运行的javascript。javascript发出请求,服务收集和处理数据,然后用一些漂亮的简单JSON回复javascript 由于我们需要的一些数据来自CRM本身,我们认为我们也应该让服务收集这些数据(使用CRM的
[2013-09-10 08:54:14.492] Process: w3wp |Organization:00000000-0000-0000-0000-000000000000 |Thread: 69 |Category: Exception |User: 00000000-0000-0000-0000-000000000000 |Level: Error |ReqId: 4b901457-a545-4844-9ce8-b017d3833087 | CrmException..ctor ilOffset = 0x36
at CrmException..ctor(Int32 errorCode, Object[] arguments) ilOffset = 0x36
at SecurityLibrary.GetPrivilegedUserCallerAndBusinessGuidsFromThread(WindowsIdentity identity, IOrganizationContext context) ilOffset = 0x6F
at SecurityLibrary.GetCallerAndBusinessGuidsFromThread(WindowsIdentity identity, Guid organizationId, LocatorServiceContext locatorServiceContext) ilOffset = 0x56
at UserManagementFactory.ValidateSpecialUser(WindowsIdentity identity, Guid organizationId) ilOffset = 0x1E
at WindowsIdentityAuthorizationManager.Authenticate(OperationContext operationContext) ilOffset = 0x185
at WindowsIdentityAuthorizationManager.CheckAccessCore(OperationContext operationContext) ilOffset = 0x22
at AuthorizationBehavior.Authorize(MessageRpc& rpc) ilOffset = 0x28
at ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc) ilOffset = 0x293
at MessageRpc.Process(Boolean isOperationContextSet) ilOffset = 0x62
at ChannelHandler.DispatchAndReleasePump(RequestContext request, Boolean cleanThread, OperationContext currentOperationContext) ilOffset = 0x1D7
at ChannelHandler.HandleRequest(RequestContext request, OperationContext currentOperationContext) ilOffset = 0xF1
at ChannelHandler.AsyncMessagePump(IAsyncResult result) ilOffset = 0x21
at AsyncThunk.UnhandledExceptionFrame(IAsyncResult result) ilOffset = 0x0
at AsyncResult.Complete(Boolean completedSynchronously) ilOffset = 0xC2
at ReceiveItemAndVerifySecurityAsyncResult`2.InnerTryReceiveCompletedCallback(IAsyncResult result) ilOffset = 0x55
at AsyncThunk.UnhandledExceptionFrame(IAsyncResult result) ilOffset = 0x0
at AsyncResult.Complete(Boolean completedSynchronously) ilOffset = 0xC2
at AsyncQueueReader.Set(Item item) ilOffset = 0x21
at InputQueue`1.Dispatch() ilOffset = 0x121
at ScheduledOverlapped.IOCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* nativeOverlapped) ilOffset = 0x22
at IOCompletionThunk.UnhandledExceptionFrame(UInt32 error, UInt32 bytesRead, NativeOverlapped* nativeOverlapped) ilOffset = 0x5
at _IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOVERLAP) ilOffset = 0x3C
>Crm Exception: Message: The user Id is invalid., ErrorCode: -2147214049
[2013-09-10 08:54:14.508] Process: w3wp |Organization:00000000-0000-0000-0000-000000000000 |Thread: 69 |Category: Platform.Sdk |User: 00000000-0000-0000-0000-000000000000 |Level: Error |ReqId: 4b901457-a545-4844-9ce8-b017d3833087 | ServiceModelTraceRedirector.TraceData ilOffset = 0x45
><TraceRecord xmlns="http://schemas.microsoft.com/2004/10/E2ETraceEvent/TraceRecord" Severity="Error"><TraceIdentifier>http://msdn.microsoft.com/en-CA/library/System.ServiceModel.Diagnostics.TraceHandledException.aspx</TraceIdentifier><Description>Handling an exception.</Description><AppDomain>/LM/W3SVC/1/ROOT-6-130232384646037254</AppDomain><Exception><ExceptionType>Microsoft.Crm.CrmException, Microsoft.Crm.Core, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35</ExceptionType><Message>The user Id is invalid.</Message><StackTrace> at Microsoft.Crm.BusinessEntities.SecurityLibrary.GetPrivilegedUserCallerAndBusinessGuidsFromThread(WindowsIdentity identity, IOrganizationContext context)
> at Microsoft.Crm.BusinessEntities.SecurityLibrary.GetCallerAndBusinessGuidsFromThread(WindowsIdentity identity, Guid organizationId, LocatorServiceContext locatorServiceContext)
> at Microsoft.Crm.Authentication.UserManagementFactory.ValidateSpecialUser(WindowsIdentity identity, Guid organizationId)
> at Microsoft.Crm.Authentication.WindowsIdentityAuthorizationManager.Authenticate(OperationContext operationContext)
> at Microsoft.Crm.Authentication.WindowsIdentityAuthorizationManager.CheckAccessCore(OperationContext operationContext)
> at System.ServiceModel.Dispatcher.AuthorizationBehavior.Authorize(MessageRpc&amp; rpc)
> at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc&amp; rpc)
> at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)</StackTrace><ExceptionString>Microsoft.Crm.CrmException: The user Id is invalid.
> at Microsoft.Crm.BusinessEntities.SecurityLibrary.GetPrivilegedUserCallerAndBusinessGuidsFromThread(WindowsIdentity identity, IOrganizationContext context)
> at Microsoft.Crm.BusinessEntities.SecurityLibrary.GetCallerAndBusinessGuidsFromThread(WindowsIdentity identity, Guid organizationId, LocatorServiceContext locatorServiceContext)
> at Microsoft.Crm.Authentication.UserManagementFactory.ValidateSpecialUser(WindowsIdentity identity, Guid organizationId)
> at Microsoft.Crm.Authentication.WindowsIdentityAuthorizationManager.Authenticate(OperationContext operationContext)
> at Microsoft.Crm.Authentication.WindowsIdentityAuthorizationManager.CheckAccessCore(OperationContext operationContext)
> at System.ServiceModel.Dispatcher.AuthorizationBehavior.Authorize(MessageRpc&amp; rpc)
> at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc&amp; rpc)
> at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)</ExceptionString></Exception></TraceRecord>
[2013-09-10 08:54:14.492]流程:w3wp |组织:00000000-0000-0000-0000-000000000000000000 |线程:69 |类别:异常|用户:00000000-0000-0000-0000-000000000000000000 |级别:错误|请求ID:4b901457-a545-4844-9ce8-b017d3833087 | CRMEException..ilOffset=0x36
在CRMEException..ctor处(Int32错误代码,对象[]参数)ilOffset=0x36
在SecurityLibrary.GetPrivilegeDuserCallandBusinessGuidsFromThread(WindowsIdentity标识,IOOrganizationContext上下文)中,ilOffset=0x6F
在SecurityLibrary.GetCallerAndBusinessGuidsFromThread(WindowsIdentity标识、Guid组织ID、LocatorServiceContext LocatorServiceContext)中,ilOffset=0x56
在UserManagementFactory.ValidateSpecialUser(WindowsIdentity,Guid organizationId)中,ilOffset=0x1E
在WindowsIdentityAuthorizationManager.Authenticate(OperationContext OperationContext)ilOffset=0x185
在WindowsIdentityAuthorizationManager.CheckAccessCore(OperationContext OperationContext)ilOffset=0x22
at AuthorizationBehavior.Authorize(MessageRpc&rpc)ilOffset=0x28
在ImmutableDispatchRuntime.ProcessMessage11(MessageRpc&rpc)ilOffset=0x293时
在MessageRpc.Process(Boolean isOperationContextSet)中,ilOffset=0x62
在ChannelHandler.DispatchAndReleasePump(RequestContext请求,布尔cleanThread,OperationContext currentOperationContext)中,ilOffset=0x1D7
在ChannelHandler.HandlerRequest(RequestContext请求,OperationContext currentOperationContext)中,ilOffset=0xF1
在ChannelHandler.AsyncMessagePump(IAsyncResult结果)中,ilOffset=0x21
在AsyncThunk.UnhandledExceptionFrame(IAsyncResult结果)时,ilOffset=0x0
在AsyncResult.Complete(布尔同步完成)时,ilOffset=0xC2
在ReceiveItemAndVerifySecurityAsyncResult`2处。InnerTryReceiveCompletedCallback(IAsyncResult结果)ilOffset=0x55
在AsyncThunk.UnhandledExceptionFrame(IAsyncResult结果)时,ilOffset=0x0
在AsyncResult.Complete(布尔同步完成)时,ilOffset=0xC2
在AsyncQueueReader.Set(Item)中,ilOffset=0x21
在InputQueue`1.Dispatch()中,ilOffset=0x121
在scheduledverlapped.IOCallback(UInt32错误代码,UInt32个字节,NativeOverlapped*NativeOverlapped)中,ilOffset=0x22
在IOCompletionThunk.UnhandledExceptionFrame(UInt32错误,UInt32字节读取,NativeOverlapped*NativeOverlapped)时,ilOffset=0x5
at_IOCompletionCallback.PerformIOCompletionCallback(UInt32错误代码,UInt32个字节,NativeOverlapped*pOVERLAP)ilOffset=0x3C
>Crm异常:消息:用户Id无效,错误代码:-2147214049
[2013-09-10 08:54:14.508]流程:w3wp |组织:00000000-0000-0000-000000000000 |线程:69 |类别:平台.Sdk |用户:00000000-0000-0000-00000000000000 |级别:错误|请求ID:4b901457-a545-4844-9ce8-b017d3833087 | ServiceModelTraceRedirector.TraceData ilOffset=0x45
>http://msdn.microsoft.com/en-CA/library/System.ServiceModel.Diagnostics.TraceHandledException.aspxHandling 异常。/LM/W3SVC/1/ROOT-6-130232384646037254Microsoft.Crm.crmeexception,Microsoft.Crm.Core,Version=5.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35用户Id无效。位于Microsoft.Crm.BusinessEntities.SecurityLibrary.GetPrivilegedUserCallandBusinessGuidsFromThread(WindowsIdentity标识,IOR组织上下文)
>位于Microsoft.Crm.BusinessEntities.SecurityLibrary.GetCallerAndBusinessGuidsFromThread(WindowsIdentity标识、Guid组织ID、LocatorServiceContext LocatorServiceContext)
>位于Microsoft.Crm.Authentication.UserManagementFactory.ValidateSpecialUser(WindowsIdentity标识,Guid组织ID)
>在Microsoft.Crm.Authentication.WindowsIdentityAuthorizationManager.Authentication(操作上下文操作上下文)
>位于Microsoft.Crm.Authentication.WindowsIdentityAuthorizationManager.CheckAccessCore(OperationContext OperationContext)
>位于System.ServiceModel.Dispatcher.AuthorizationBehavior.Authorization(MessageRpc&;rpc)
>位于System.ServiceModel.Dispatcher.ImmutableDispatcheRuntime.ProcessMessage11(MessageRpc&;rpc)
>位于System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)的Microsoft.Crm.CRMEException:用户Id无效。
>位于Microsoft.Crm.BusinessEntities.SecurityLibrary.GetPrivilegedUserCallandBusinessGuidsFromThread(WindowsIdentity标识,IOR组织上下文)
>位于Microsoft.Crm.BusinessEntities.SecurityLibrary.GetCallerAndBusinessGuidsFromThread(WindowsIdentity标识、Guid组织ID、LocatorServiceContext LocatorServiceContext)
>在Microsoft.Crm.Authentic上