1

以下のブログエントリのコードを使用して、ユーザークエリを別のユーザーに再割り当てしています。データベースでDBUpdateステートメントを実行しました(以下のブログに示されています)。

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]
4

1 に答える 1

2

したがって、UserQueryのGUIDをどのように取得しているかを知る必要があります。あなたがそれについて詳しく説明することができれば、それはおそらく助けになるでしょう。そうは言っても、私は答えを撃ちます。

Outlookを使用していないからといって、データベースに自動的に生成されたビューとフィルターがないというわけではありません。

割り当てを行う前にUserQueryエンティティをチェックして、エラーメッセージを生成するタイプの1つではないことを確認する必要があります。さらに調査できるように、これらをログに記録することもできます。

チェックする値userquery.querytypeは、CrmNumberタイプです。フラグを使用する列挙型(SDK:SDK \ Helpers \ CS \ CrmHelpers \ enums.csを使用)になります。を使用して、属性に特定のタイプのクエリのフラグが含まれているかどうかを確認します。.HasFlag(integer)

潜在的なクエリタイプのリストについては、SDKを参照してください。

オフラインで使用するために設計されたクエリの割り当ては避けたほうがよいでしょう。

于 2013-01-15T21:55:19.527 に答える