MSCRM Dynamicsを使用しており、特定のユーザーのすべての子を取得しようとしています。(ユーザーにはマネージャーがあり、マネージャーには「子」があります。)以下は機能しますが、ユーザーに子がない場合は例外をスローします。これは最初は論理的に思えるかもしれませんが、空のセットを返すだけではどうでしょうか。そして何よりも、「無効な引数」(これは間違っています)の不可解なメッセージを含むSoapExceptionをスローし、.Detail.InnerTextは「0x80040203ConditionOperator.Inに渡された値は空のプラットフォームです」と表示します。対応するResponseクラスを見ると、コレクションがあります。空のままにしておかないのはなぜですか。
// Create the request object.
RetrieveAllChildUsersSystemUserRequest retrieve =
new RetrieveAllChildUsersSystemUserRequest();
// Create the column set object that indicates the fields to be retrieved.
ColumnSet cols = new ColumnSet();
cols.EntityName = "systemuserid";
// Set the column set.
retrieve.ColumnSet = cols;
// Set the ID of the parent user.
retrieve.EntityId = context.UserId;
RetrieveAllChildUsersSystemUserResponse retrieved =
new RetrieveAllChildUsersSystemUserResponse();
/// Execute the request.
/// Catches if user does not have children
/// (Check to see if user is manager)
try
{
retrieved =
(RetrieveAllChildUsersSystemUserResponse)crmService.Execute(retrieve);
}
catch (System.Web.Services.Protocols.SoapException e)
{
throw new Exception(string.Format("{0}", e.Detail.InnerText));
}