warum mein Sharepoint-Workflow immer aufhören, wenn ich diesen Code verwenden?
-
12-09-2019 - |
Frage
Ich brauche einen Benutzer in einer Liste zu finden, die AssignedTo Aufgabe Eigenschaft zu setzen, sind diese Informationen in einer Liste. Also habe ich diese Methode verwenden:
public static SPUser GetSPUser(SPListItem item, string key){
SPFieldUser field = item.Fields[key] as SPFieldUser;
if (field != null)
{
SPFieldUserValue fieldValue = field.GetFieldValue(item[key].ToString()) as SPFieldUserValue;
if (fieldValue != null)
{
return fieldValue.User;
}
}
return null;
}
Das Problem ist, dass, wenn ich diese Methode verwenden oder diesen Teil des Codes, meinen Workflow Stopp ohne etwas zu sagen. Hier ein exemple von Code, wenn ich es verwenden:
using (SPSite site = new SPSite(adress_of_my_site))
{
using (SPWeb web = site.OpenWeb())
{
SPList list = web.Lists["Acteurs du projet"];
SPView view = cobj_ListeDesActeursDuProjet.DefaultView;
SPListItemCollection itemcollection = list.GetItems(view);
foreach (SPListItem item in itemcollection)
{
SPUser lobj_acteur = Utilities.GetSPUser(item,"acteur");
// Dictionary<string,class>
ActeursDuProjet[item["Rôle"].ToString()] =
new ActeursDuProjet()
{
Login = lobj_acteur.LoginName,
Email = lobj_acteur.Email
};
}
}
}
Wenn ich den Inhalt meiner foreach meinen Workflow Kommentar weiterhin auch ...
Wenn jemand eine Idee hat, wird es kühl sein.
Viele Grüße, Loïc
edit: Problem im Code
Lösung
Hier sind einige Tipps zur Fehlerbehebung, die helfen kann:
ULS-Protokolle
sollten Ausnahmen im Detail berichtet hier werden.
Aktivieren Sie das Debuggen für alle .NET-Code
Dies bewirkt, dass der Debugger zu brechen, wenn eine Ausnahme in Sharepoint sowie Code auftritt. Der Nachteil ist, dass der Debugger auf ‚normale‘ Ausnahmen brechen, die keine Nebenwirkungen verursachen. Also nicht täuschen lassen!
So aktivieren: Zum Debuggen, Ausnahmen und Common Language Runtime Ausnahmen ticken. Gehen Sie auch auf Extras, Optionen, Debugging und untick Mein-Code aktivieren einfach. Dann heften sich an w3wp.exe.
Kommentar Code
Sie können auch alle Ihre Code auskommentieren. Wenn der Workflow-Schritt fehlschlägt, wissen Sie, es ein Problem an anderer Stelle ist. Wenn der Workflow-Schritt geht, dann Auskommentierung Code starten, bis es ausfällt -. Dann wissen Sie, wo sie suchen müssen
Andere Tipps
Ich habe versucht, das oben zu kommentieren, aber es formatiert nicht schön so ist es hier.
Es ist wahrscheinlich gut, aber das sieht verdächtig zu mir:
// Dictionary<string,class>
ActeursDuProjet[item["Rôle"].ToString()] =
new ActeursDuProjet()
{
Login = lobj_acteur.LoginName,
Email = lobj_acteur.Email
};
Ich würde denken, es sei so etwas wie:
// dictionary declared somewhere earlier
Dictionary<string,ActeursDuProjet> roles = new Dictionary<string,ActeursDuProjet>();
// inside the foreach
string role = item["Rôle"].ToString();
if (!roles.ContainsKey(role))
{
ActeursDuProjet foo = new ActeursDuProjet();
foo.Login = lobj_acteur.LoginName;
foo.Email = lobj_acteur.Email;
roles.Add(role, foo);
}