Publié mardi 29 janvier 2008 00:44 par Adrien Siffermann

SPListItem.Update() jette une Exception "L'opération n'est pas valide en raison de l'état actuel de l'objet"

J'ai été confronté aujourd'hui à une exception jetée sur un bout de code pourtant bien anodin et commun : l'ajout d'un nouvel élément à une liste.
Pour être plus précis, c'est la mise à jour des champs de cet élément à l'intérieur d'un bloc SPSecurity.RunWithElevatedPrivileges qui provoquait cette exception.

Après quelques essais infructueux et quelques recherches, il s'avère que sortir la création et la mise à jour des champs de mon élément en dehors du bloc résout le problème. Ainsi, on ne fait que l'instanciation du SPSite et du SPWeb dans le bloc SPSecurity.RunWithElevatedPrivileges, comme dans l'exemple de code ci-dessous :

        public string CreateNewListItem()

        {

            string result = "";

            SPWeb rootWeb = null;

 

            SPSecurity.RunWithElevatedPrivileges(delegate()

            {

                using (SPSite site = new SPSite("http://localhost"))

                    rootWeb = site.RootWeb;

            });

 

            SPList list = rootWeb.Lists["Sample List"];

            if (list != null)

            {

                try

                {

                    rootWeb.AllowUnsafeUpdates = true;

 

                    SPListItem item = list.Items.Add();

                    item["Title"] = "Update OK";

                    item.Update();

 

                    rootWeb.AllowUnsafeUpdates = false;

                }

                catch (Exception ex)

                {

                    result = "ListItem cannot be created (" + ex.Message + ") !";

                }

            }

            else

                result = "List 'Sample List' cannot be found !";

 

            rootWeb.Dispose();

            return result;

        }

A vrai dire, je n'arrive pas à comprendre pourquoi faire la création et la mise à jour de l'élément dans le bloc SPSecurity.RunWithElevatedPrivileges ne fonctionne pas, et je trouvais ce "tourne-autour" assez particulier pour être publié...

Adrien

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :

Les 10 derniers blogs postés

- SQL Server 2008 : Un livre en cours de préparation ! par SQL Server vu par Christian Robert le il y a 4 heures et 20 minutes

- IIS7 : à quel pool d'application correspond le processus w3wp.exe par Atteint de JavaScriptite Aiguë [Cyril Durand] le il y a 5 heures et 17 minutes

- PDC 2008 - J-14 ! par Nix's Blog le il y a 7 heures et 2 minutes

- [Silverlight] La version finale de Silverlight 2 sera disponible en téléchargement demain ! par Thomas Lebrun le il y a 8 heures et 55 minutes

- SharePoint 2007 : Professional Developers Conference 2008 par Philippe Sentenac [MVP SharePoint] le il y a 14 heures et 48 minutes

- [Silverlight] En attendant Silverlight 2 RTW par Blog Technique d'Audrey PETIT le 10-11-2008, 21:55

- Le nouveau Gojira, c’est pour lundi… par CoqBlog le 10-11-2008, 01:18

- SharePoint : nouvel article sur la mise en place des Scopes dans MOSS Searchs par Blog Technique de Romelard Fabrice le 10-10-2008, 17:52

- Hello CS par Le Blog de julz le 10-10-2008, 12:26

- MSDN/TechNet/Microsoft Days Tour 2008 à Lille les 13 et 14 Octobre ! par RedoBlog - The .NET Gentleman !!! le 10-10-2008, 09:35