none
Erreur quand j'essaie d'updater un document dans une librairie

    Question

  • Bonjour ! 

    J'ai l'erreur suivante lorsque je tente de modifier un document (SP2013) : 

    System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values.    
    at Microsoft.SharePoint.SPListItemCollection.get_Item(Int32 iIndex)     
    at Microsoft.SharePoint.SPListItem.EnsureItemIsValid()     
    at Microsoft.SharePoint.SPListItem.GetValue(SPField fld, Int32 columnNumber, Boolean bRaw, Boolean bThrowException)     
    at Microsoft.SharePoint.SPListItem.GetValue(String strName, Boolean bThrowIfValueMissing, Boolean bThrowIfFieldMissing)     
    at Microsoft.SharePoint.SPListItem.get_File()     
    at Microsoft.SharePoint.WebControls.SaveButton.OnBubbleEvent(Object source, EventArgs e)     
    at System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args)     
    at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

    Getting Error Message for Exception System.Web.HttpUnhandledException (0x80004005): 
    Exception of type 'System.Web.HttpUnhandledException' was thrown. ---> System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values.     
    at Microsoft.SharePoint.SPListItemCollection.get_Item(Int32 iIndex)     
    at Microsoft.SharePoint.SPListItem.EnsureItemIsValid()     
    at Microsoft.SharePoint.SPListItem.GetValue(SPField fld, Int32 columnNumber, Boolean bRaw, Boolean bThrowException)     
    at Microsoft.SharePoint.SPListItem.GetValue(String strName, Boolean bThrowIfValueMissing, Boolean bThrowIfFieldMissing)     
    at Microsoft.SharePoint.SPListItem.get_File()     
    at Microsoft.SharePoint.WebControls.SaveButton.OnBubbleEvent(Object source, EventArgs e)     
    at System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args)     
    at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)    
    at System.Web.UI.Page.HandleError(Exception e)     
    at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)    
    at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)     
    at System.Web.UI.Page.ProcessRequest()     
    at System.Web.UI.Page.ProcessRequest(HttpContext context)     
    at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()     
    at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

    Voici mon code :

        Public Overrides Sub ItemUpdated(properties As SPItemEventProperties)
            MyBase.ItemUpdated(properties)
    
            EventFiringEnabled = False
            Dim itm As SPListItem = properties.ListItem
    
            SPSecurity.RunWithElevatedPrivileges(Sub() GiveRole(itm))
            EventFiringEnabled = True
        End Sub
    
        Private Function getTermNameById(ByVal termSession As TaxonomySession, ByVal tsGuid As Guid)
            Dim term As Term = termSession.GetTerm(TSGuid)
            Return term.GetDefaultLabel(1036)
        End Function
    
        Sub GiveRole(itm As SPListItem)
    
            Using web As SPWeb = itm.ParentList.ParentWeb
                Dim reseauCollection As TaxonomyFieldValueCollection = TryCast(itm("Reseau"), TaxonomyFieldValueCollection)
                Dim roleCollection As TaxonomyFieldValueCollection = TryCast(itm("Roles"), TaxonomyFieldValueCollection)
    
                itm.ResetRoleInheritance()
    
                If Not reseauCollection.Any(Function(r) r.Label = "Public") Then
    
                    itm.BreakRoleInheritance(True, True)
    				
                    Dim tsession As New TaxonomySession(web.Site)
    
                    If roleCollection.Any() AndAlso
                        Not roleCollection.Any(Function(r) r.Label.ToLower() = "all") Then
                        For Each reseau As TaxonomyFieldValue In reseauCollection
                            For Each role As TaxonomyFieldValue In roleCollection
                                Dim roleName As String = getTermNameById(tsession, New Guid(role.TermGuid))
                                GrantPermission(itm, web, SPRoleType.Reader, web.SiteGroups(String.Format("{0}_{1}", reseau.Label, roleName)))
                            Next
                        Next
                    End If
                End If
            End Using
    
        End Sub
    
        Sub GrantPermission(ByVal currentListItem As SPListItem, ByVal oSpWeb As SPWeb, ByVal spRoleType As SPRoleType, ByVal spPrincipal As SPPrincipal)
            Dim oSpRoleDefinition As SPRoleDefinition = oSpWeb.RoleDefinitions.GetByType(spRoleType)
            Dim oSpRoleAssignment As New SPRoleAssignment(spPrincipal)
            oSpRoleAssignment.RoleDefinitionBindings.Add(oSpRoleDefinition)
            currentListItem.RoleAssignments.Add(oSpRoleAssignment)
        End Sub

    J'ai une page d'erreur qui apparaît avec un ID de corrélation (les messages d'erreurs plus haut proviennent de là) et quand je retourne dans la librairie de document la mise à jour s'est bien effectuée. 

    J'ai se problème lorsque j'utilise un compte qui est dans Concepteur exemple, mais pas avec un compte admin.. 

    Est-ce que vous auriez une piste qui pourrait m'aider ? Car j'ai pas mal toute essayé et je ne trouve rien ..  

    Merci ! 


    mercredi 11 avril 2018 18:09

Toutes les réponses

  • Bonjour peo1990,
    Merci d’avoir contacté les forums MSDN France. La langue utilisée sur ces forums est la langue Française, donc s’il vous plaît modifiez votre premier message, comme on vous demande dans l’étiquette sur les forums MSDN France.
    Merci pour votre compréhension et collaboration.

    Cordialement,
    Nina

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    jeudi 12 avril 2018 06:21
    Modérateur
  • Bonjour Nina, 

    C'est fait. 

    Merci ! 

    jeudi 12 avril 2018 12:25