Dynamics crm 无法在CRM Web Service AssignRequest上分配脱机筛选器错误

Dynamics crm 无法在CRM Web Service AssignRequest上分配脱机筛选器错误,dynamics-crm,dynamics-crm-4,Dynamics Crm,Dynamics Crm 4,我正在使用下面博客条目中的代码将用户查询重新分配给其他用户。我已经在数据库中运行了DB Update语句(如下面的博客所示) 这是我的密码: CrmAuthenticationToken token = new CrmAuthenticationToken(); token.AuthenticationType = AuthenticationType.AD; token.OrganizationName = Request.Params["orgname"]; C

我正在使用下面博客条目中的代码将用户查询重新分配给其他用户。我已经在数据库中运行了DB Update语句(如下面的博客所示)

这是我的密码:

  CrmAuthenticationToken token = new CrmAuthenticationToken();  
  token.AuthenticationType = AuthenticationType.AD; 
  token.OrganizationName = Request.Params["orgname"];  

  CrmService crmService = new CrmService(); 
  crmService.Url = ConfigurationManager.AppSettings["WebServiceUrl"]; 
  crmService.CrmAuthenticationTokenValue = token;  
  crmService.PreAuthenticate = true;
  crmService.UseDefaultCredentials = false;
  crmService.Credentials = new NetworkCredentials(username, password, domain);  

  SecurityPrincipal newowner = new SecurityPrincipal();  
  newowner.Type = SecurityPrincipalType.User;  
  newowner.PrincipalId = new Guid(userid);  

  TargetOwnedUserQuery query = new TargetOwnedUserQuery();  
  query.EntityId = new Guid(queryid);  

  AssignRequest assign = new AssignRequest();  
  assign.Assignee = newowner;  
  assign.Target = query;  

  AssignResponse assignResponse = (AssignResponse)crmService.Execute(assign);  
运行这段代码时,我在crmService.Execute()中得到以下异常

当对两个用户查询运行此命令时,我会得到一些稍微不同的异常。大多数用户查询返回上面显示的上述/第一个异常。少数返回这些不同的SOAP异常

2) Inner Detail: 0x80048448 Cannot assign address book filters Platform
3) Inner Detail: 0x80040264 Cannot assign Outlook Filters Platform
据我所知,我们的CRM产品没有使用离线过滤器。我们也没有使用任何与Outlook集成相关的东西

自定义ASPX页面托管在与我们的CRM相同的服务器上,并位于ISV文件夹中。身份验证、站点地图定制和(似乎)其他每一部分都能正确地将其集成为自定义页面

有关于如何解决此问题的提示吗

谢谢

查询以获取UserQueryID,@SystemUserId通过用户的填充下拉框传入

SELECT [Name], [UserQueryId] 
FROM [UserQueryBase] 
WHERE [OwningUser] = @SystemUserId 
ORDER BY [Name]

因此,我们确实需要知道如何获取UserQuery的Guid。如果你能详细说明这一点,可能会有所帮助。也就是说,我会试着回答

不使用Outlook并不意味着数据库中不会自动生成视图和过滤器

您需要在执行分配之前检查UserQuery实体,以确保它不是生成错误消息的类型之一。您可能还希望记录这些信息,以便进一步调查

要检查的值是
userquery.querytype
,它是一种CrmNumber类型。它将是使用标志的枚举类型(使用SDK:SDK\Helpers\CS\CrmHelpers\enums.CS)。使用
(整数)
检查属性是否包含特定查询类型的标志


您将希望避免执行为脱机使用而设计的查询分配

谢谢。我明天去查一下。下面是我用来获取UserQuery的代码。上面发布的链接是脱机的,因此这是Google缓存副本。我将发布查询代码以获取上面的UserQuery Id。看起来我可以简单地修改查询语句以排除我们不使用的查询类型,例如OfflineFilters=16。谢谢。你对QueryType的评论为我指明了正确的方向。我刚刚从SQL查询中排除了QueryTypes,这就是我获取QueryID的地方。代码的其余部分按预期工作。赏金。
SELECT [Name], [UserQueryId] 
FROM [UserQueryBase] 
WHERE [OwningUser] = @SystemUserId 
ORDER BY [Name]