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

Foi útil?

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);
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top