pourquoi mon flux de travail sharepoint toujours arrêter quand j'utiliser ce code?
-
12-09-2019 - |
Question
Je dois trouver un utilisateur dans une liste pour définir la propriété de la tâche AssignedTo, ces informations sont dans une liste. Donc, j'utilise cette méthode:
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;
}
Le problème est que quand j'utilise cette méthode ou cette partie de code, mon arrêt de workflow sans dire quoi que ce soit. Voici un exemple de code lorsque je l'utilise:
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
};
}
}
}
Si je commente le contenu de mon foreach mon flux de travail continue ainsi ...
Si quelqu'un a une idée ce sera cool.
Cordialement, Loïc
edit: problème dans le code
La solution
Voici quelques conseils de débogage qui pourraient aider:
journaux ULS
Toute exception doit être signalé ici en détail.
Activer le débogage pour tout le code .NET
Cela entraînera le débogueur de rompre chaque fois qu'une exception se produit dans SharePoint ainsi que votre code. L'inconvénient est que le débogueur se brisera sur les exceptions « normales » qui causent pas d'effets secondaires. Alors ne soyez pas induits en erreur!
Pour activer: Allez Debug, les exceptions et cocher Exceptions Common Language Runtime. Allez aussi sur Outils, Options, débogage et décocher Activer juste mon code. Puis attacher à W3WP.exe.
Code Commentant
Vous pouvez également commenter tous de votre code. Si l'étape de workflow échoue, vous savez qu'il ya un problème ailleurs. Si l'étape de workflow passe, puis lancez le code décommentant jusqu'à ce qu'il échoue -. Alors vous savez où regarder
Autres conseils
J'ai essayé de commenter ce ci-dessus, mais il ne formate pas bien si elle est ici.
Il est sans doute très bien, mais cela semble louche pour moi:
// Dictionary<string,class>
ActeursDuProjet[item["Rôle"].ToString()] =
new ActeursDuProjet()
{
Login = lobj_acteur.LoginName,
Email = lobj_acteur.Email
};
Je pense que ce serait quelque chose comme:
// 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);
}