Élément de liste à plusieurs utilisateurs d'autorisations par programmation (sharepoint)

J'ai regardé et n'ai pas trouvé de solution pour le moment. J'ai ramassé des fragments de code ici et là pour trouver une solution.

J'ai un Doc Bibliothèque appelée "Collaboration" avec le champ "Assignés". C'est une des Personnes/Groupes de champ. Ces personnes seront en mesure de travailler sur un document(élément de la liste de l'autorisation). Aujourd'hui, au premier, ils ont caché des autorisations(ils ne peux pas le voir), mais lorsqu'il est ajouté à la doc, ils pourront voir et être capable de contribuer, aussi, ils recevront un email de notification. J'ai joint le code complet ci-dessous.

Donc, je n'obtiens aucune erreur, quand je vais à travers VS10 de débogage. Mais il ne pas envoyer de courriel ou de ne pas définir les autorisations. Quel est le problème?

    using System;
using System.IO;
using System.Security.Permissions;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Security;
using Microsoft.SharePoint.Utilities;
using Microsoft.SharePoint.Workflow;
namespace ARDT.Notifications
{
///<summary>
///List Item Events
///</summary>
public class Notifications : SPItemEventReceiver
{
///<summary>
///An item was checked in
///</summary>
public override void ItemCheckedIn(SPItemEventProperties properties)
{
SPSite site = new SPSite("http://sp2010dev/ardt");
using (SPWeb web = site.OpenWeb())
{
SPList list = web.Lists["Document Collaboration"];
SPListItem listItem = properties.ListItem;
SPUser userName = null;
String toAddress = null;
//EMail initializations
bool appendHtmlTag = false;
bool htmlEncode = false;
string subject = "Subject";
string message = "Message text";
//get usernames
string[] userNameArray = listItem.Fields["Assigned to"].ToString().Split(';');
for (int i = 0; i <= userNameArray.Length - 1; i++)
{
userName = web.AllUsers[userNameArray[i]];
toAddress = userName.Email;
SPSecurity.RunWithElevatedPrivileges(delegate()
{
//EMAIL USER
bool result = SPUtility.SendEmail(web, appendHtmlTag, htmlEncode, toAddress, subject, message);
//PERMISSIONS
//remove permissions first
web.AllowUnsafeUpdates = true;
listItem.BreakRoleInheritance(false);
SPRoleAssignmentCollection raCollection = listItem.RoleAssignments;
//remove exisiting permissions one by one
for (int a = raCollection.Count - 1; i > -0; i--)
{
raCollection.Remove(a);
}
//grant permissions for specific list item
SPRoleDefinition roleDefintion = web.RoleDefinitions.GetByType(SPRoleType.Contributor);
SPRoleAssignment roleAssignment = new SPRoleAssignment(userName);
roleAssignment.RoleDefinitionBindings.Add(roleDefintion);
listItem.RoleAssignments.Add(roleAssignment);
listItem.Update();
});
}
}
base.ItemCheckedIn(properties);
}
}
}
InformationsquelleAutor Shankeith | 2011-06-20