我正在尝试使用WCF服务(位于主机上)从CRM(即在虚拟机上)检索数据。 当我从主机调试并尝试连接到CRM时,我正在 Service.RetrieveMultiple 间歇性地运行下面的SecurityException。
代码:
QueryExpression queryIssue = new QueryExpression
{ EntityName = irpc_Issue.EntityLogicalName, ColumnSet = new ColumnSet(new String [] {“irpc_issueid”,“irpc_issuename”}), Criteria = new FilterExpression() };
queryIssue.Criteria.AddCondition(“irpc_issueid”,ConditionOperator.Equal,issueGuid); data.Issue = new NameGuid(); data.Issue.Name = service.RetrieveMultiple(queryIssue).Entities.FirstOrDefault()。Attributes [“irpc_issuename”]。ToString();
例外详细信息:
System.ServiceModel.Security.MessageSecurityException:{“令牌提供程序无法获取目标'http://irpc-dc/amgen/XRMServices/2011/Organization.svc'的令牌。”}
InnerException:{“提供的NetworkCredentials无法创建Kerberos凭据,有关详细信息,请参阅内部异常。”} 资料来源:mscorlib
服务器堆栈跟踪:
在System.ServiceModel.Security.SecurityProtocol.GetToken(SecurityTokenProvider提供程序,EndpointAddress目标,TimeSpan超时)
在System.ServiceModel.Security.MessageSecurityProtocol.GetTokenAndEnsureOutgoingIdentity(SecurityTokenProvider provider,Boolean isEncryptionOn,TimeSpan timeout,SecurityTokenAuthenticator authenticator)
在System.ServiceModel.Security.SymmetricSecurityProtocol.TryGetTokenSynchronouslyForOutgoingSecurity(消息消息,SecurityProtocolCorrelationState correlationState,Boolean isBlockingCall,TimeSpan timeout,SecurityToken& token,SecurityTokenParameters& tokenParameters,SecurityToken& prerequisiteWrappingToken,IList 1& supportingTokens, SecurityProtocolCorrelationState& newCorrelationState)
at System.ServiceModel.Security.SymmetricSecurityProtocol.SecureOutgoingMessageCore(Message& message, TimeSpan timeout, SecurityProtocolCorrelationState correlationState)
at System.ServiceModel.Security.MessageSecurityProtocol.SecureOutgoingMessage(Message& message, TimeSpan timeout, SecurityProtocolCorrelationState correlationState)
at System.ServiceModel.Channels.SecurityChannelFactory
1.SecurityRequestChannel.Request(消息消息, TimeSpan超时)
在System.ServiceModel.Dispatcher.RequestChannelBinder.Request(消息消息,TimeSpan超时)
在System.ServiceModel.Channels.ServiceChannel.Call(String action,Boolean oneway,ProxyOperationRuntime operation,Object [] ins,Object [] outs,TimeSpan timeout)
在System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall,ProxyOperationRuntime操作)
在System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
在[0]处重新抛出异常: 在System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg,IMessage retMsg) 在System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData,Int32 type) 在Microsoft.Xrm.Sdk.IOrganizationService.RetrieveMultiple(QueryBase查询) 在Microsoft.Xrm.Sdk.Client.OrganizationServiceProxy.RetrieveMultipleCore(QueryBase查询) 在Microsoft.Xrm.Sdk.Client.OrganizationServiceProxy.RetrieveMultiple(QueryBase查询)
我在Guest上运行了SETSPN命令(SETSPN -A HTTP / irpc-dc IRPC \ CrmService),参考这里的线程 http://social.microsoft.com/Forums/en-US/crm2011beta/thread/132a6d26-04fc-4e1e-8a7e-06088e106578
我仍然遇到这个例外。
我想知道是否有人遇到同样的错误。
对此有任何帮助/建议将不胜感激。
由于
答案 0 :(得分:1)
当你说“断断续续”时,这意味着它也有可能发挥作用吗?
这是CRM 2011 Beta吗? Beta引入了CTP中不存在的身份验证问题4.您最近是否在VM上运行Windows / Microsoft Update? Beta本月早些时候通过WU收到了更新。我不知道他们是否对身份验证问题做了任何事情(至少我没有读过任何内容),但是如果你还没有更新,那么值得一试。