por que o meu fluxo de trabalho sharepoint sempre parar quando eu uso esse código?
-
12-09-2019 - |
Pergunta
Eu preciso encontrar um usuário em uma lista para definir a propriedade tarefa AssignedTo, estas informações estão em uma lista. Então eu uso este método:
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;
}
O problema é que quando eu usar este método ou esta parte do código, a minha paragem de fluxo de trabalho sem dizer nada. Aqui um exemplo de código quando eu usá-lo:
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 eu comentar o conteúdo do meu foreach meu trabalho continuar assim ...
Se alguém tem uma idéia que vai ser legal.
Saudações, Loïc
edit: problema no código
Solução
Aqui estão algumas dicas de depuração que podem ajudar:
ULS registros
Todas as exceções devem ser relatados aqui em algum detalhe.
Ativar a depuração para todo o código .NET
Isto fará com que o depurador para quebrar sempre que uma exceção ocorre no SharePoint, bem como o seu código. A desvantagem é que o depurador irá quebrar em exceções 'normais' que não causem efeitos colaterais. Portanto, não se deixe enganar!
Para ativar: Vá para Debug, Exceções e carrapatos Exceções Common Language Runtime. Também vá em Ferramentas, Opções, depuração e desmarque Habilitar Just My Code. Em seguida, anexar a w3wp.exe.
código Comentando
Você também pode comentar a todo o seu código. Se a etapa de fluxo de trabalho falhar, você sabe que há um problema em outro lugar. Se a etapa de fluxo de trabalho passa, em seguida, iniciar código descomentando até falhar -. Então você sabe onde olhar
Outras dicas
Eu tentei comentar este acima, mas não formatar bem isso aqui está.
Provavelmente é bom, mas isso parece suspeito para mim:
// Dictionary<string,class>
ActeursDuProjet[item["Rôle"].ToString()] =
new ActeursDuProjet()
{
Login = lobj_acteur.LoginName,
Email = lobj_acteur.Email
};
Eu acho que seria algo como:
// 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);
}