我使用以下博客条目中的代码将用户查询重新分配给其他用户。我在数据库中运行了DB Update语句(如下面的博客所示)。
http://mscrmblogger.com/2009/02/04/crm-4-userquery-privileges-for-system-administrators/
这是我的代码:
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 Exception
Message: Server was unable to process request
Inner Detail: 0x8000404ff Cannot assign Offline Filters Platform
当针对几个用户查询运行此操作时,我会得到一些略有不同的异常。大多数用户查询返回上面显示的上述/第一个异常。一些返回这些不同的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]
答案 0 :(得分:2)
所以我们真的需要知道你是如何获得UserQuery的Guid的。如果你能详细说明它可能会有所帮助。那就是说,我会小心翼翼地回答。
仅仅因为您没有使用Outlook并不意味着数据库中不会自动生成视图和过滤器。
您需要在执行分配之前检查UserQuery实体,以确保它不是生成错误消息的类型之一。您可能还希望记录这些内容,以便进一步调查它们。
要检查的值是userquery.querytype
,它是CrmNumber类型。它将是一个使用标志的Enum类型(使用SDK:SDK \ Helpers \ CS \ CrmHelpers \ enums.cs)。使用.HasFlag(integer)
检查属性是否包含特定类型查询的标志。
请参阅SDK for a list of potential query types。
您将希望避免为脱机使用而分配查询。