Wir verwenden MSCRM Dynamics, und wir versuchen, alle Kinder eines bestimmten Benutzers zu erhalten. (Ein Benutzer hat einen Manager, der Manager hat "Kinder".) Folgendes funktioniert, aber löst eine Ausnahme aus, wenn der Benutzer keine Kinder hat. Das erscheint zunächst vielleicht logisch, aber warum sollte man nicht einfach einen leeren Satz zurückgeben? Und von allen Dingen, es wirft eine SoapException mit einer kryptischen Nachricht von "Ungültiges Argument" (was falsch ist) und die .Detail.InnerText sagt "0x80040203 Der Wert für ConditionOperator übergeben. In ist leere Plattform". Wenn Sie sich die entsprechende Response-Klasse ansehen, hat sie eine Sammlung - warum nicht einfach leer lassen?CRM: Get Kinder wirft Ausnahme auf keine Kinder
// 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));
}
Wir schlucken derzeit alle SoapExceptions, was ich wirklich als eine schlechte Lösung empfinde. Ich muss in dem Ausdruck herumkramen, um zu sehen, ob ich diesen Fall besser isolieren kann, wenn keine bessere Auflösung gefunden werden kann. – Thanatos