perché il mio flusso di lavoro SharePoint ferma sempre quando uso questo codice?
-
12-09-2019 - |
Domanda
Ho bisogno di trovare un utente in un elenco per impostare la proprietà compito AssignedTo, queste informazioni sono in un elenco. Quindi io uso questo metodo:
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;
}
Il problema è che quando uso questo metodo o questa parte del codice, la mia fermata flusso di lavoro senza dire niente. Ecco un esempio di codice quando lo uso:
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
};
}
}
}
Se io commento il contenuto del mio foreach mio flusso di lavoro continua così ...
Se qualcuno ha un'idea che sarà cool.
Saluti, Loïc
modifica: problema nel codice
Soluzione
Ecco alcuni suggerimenti di debug che potrebbero aiutare:
registri ULS
Eventuali eccezioni devono essere riportati qui in dettaglio.
Attiva il debug per tutto il codice .NET
In questo modo il debugger di rompere ogni volta che si verifica un'eccezione in SharePoint così come il vostro codice. Il rovescio della medaglia è che il debugger si romperà sulle eccezioni 'normali' che non hanno effetti collaterali. Quindi non lasciatevi ingannare!
Per consentire: Vai debug, eccezioni e spuntare Eccezioni Common Language Runtime. Anche andare in Strumenti, Opzioni, il debug e deselezionare Attiva Just My Code. Poi allegare al w3wp.exe.
Codice Commentando
Si potrebbe anche commentare tutto il codice. Se il passo del flusso di lavoro viene a mancare, si sa che c'è un problema altrove. Se il passo del flusso di lavoro passa, quindi avviare il codice decommentando fino a quando non fallisce -. Poi si sa dove guardare
Altri suggerimenti
Ho provato a commentare questo sopra, ma non ha formatto bene ecco che è.
E 'probabilmente va bene, ma questo sembra pesce a me:
// Dictionary<string,class>
ActeursDuProjet[item["Rôle"].ToString()] =
new ActeursDuProjet()
{
Login = lobj_acteur.LoginName,
Email = lobj_acteur.Email
};
penserei che sarebbe qualcosa di simile:
// 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);
}