I am using this code to create a new folder in a sharepoint library and to set the permissions to this folder. The code works in infopath client but but as a webbased form I always get an error. I think it must be a security problem. The form is fill trusted.
Code:
public void btn_addFolder_Clicked(object sender, ClickedEventArgs e) { XPathNavigator nav = MainDataSource.CreateNavigator(); XPathNavigator x = nav.SelectSingleNode("/my:XArgoEntry/my:username", NamespaceManager); string text = x.Value; XPathNavigator nav1 = MainDataSource.CreateNavigator(); XPathNavigator x1 = nav1.SelectSingleNode("/my:XArgoEntry/my:Number", NamespaceManager); string foldername = x1.Value; SPSite site = new SPSite("http://w2k3:3000/sites/Magna"); site.AllowUnsafeUpdates = true; SPWeb web = site.OpenWeb(""); web.AllowUnsafeUpdates = true; SPFolder folder = web.GetFolder("Dokumente"); SPFolder newfolder = folder.SubFolders.Add(foldername); SPWebCollection collsite = site.AllWebs; //********** Userberechtigung setzen BEGINN ****** SPUser user = collsite[""].EnsureUser(text); SPRoleDefinition RoleDefinitionRdr = collsite[""].RoleDefinitions.GetByType(SPRoleType.Reader); SPRoleAssignment roleAssignment = new SPRoleAssignment((SPPrincipal)user); roleAssignment.RoleDefinitionBindings.Add(RoleDefinitionRdr); if (!newfolder.Item.HasUniqueRoleAssignments) { newfolder.Item.BreakRoleInheritance(false); } while (newfolder.Item.RoleAssignments.Count > 0) newfolder.Item.RoleAssignments.Remove(0); newfolder.Item.RoleAssignments.Add(roleAssignment); //******* Userberechtigung ENDE ******** newfolder.Item.Update();
Error:
Microsoft.SharePoint.SPException: Die Sicherheitsüberprüfung für diese Seite ist ungültig. Klicken Sie auf die Schaltfläche 'Zurück' Ihres Browsers, aktualisieren Sie dann die Seite, und starten Sie den Vorgang erneut. ---> System.Runtime.InteropServices.COMException (0x8102006D): Die Sicherheitsüberprüfung für diese Seite ist ungültig. Klicken Sie auf die Schaltfläche 'Zurück' Ihres Browsers, aktualisieren Sie dann die Seite, und starten Sie den Vorgang erneut. at Microsoft.SharePoint.Library.SPRequestInternalClass.UpdateRoleAssignment(String bstrUrl, Guid& pguidScopeId, Int32 lPrincipalID, Object& pvarArrIdRolesToAdd, Object& pvarArrIdRolesToRemove) at Microsoft.SharePoint.Library.SPRequest.UpdateRoleAssignment(String bstrUrl, Guid& pguidScopeId, Int32 lPrincipalID, Object& pvarArrIdRolesToAdd, Object& pvarArrIdRolesToRemove) --- End of inner exception stack trace --- at Microsoft.SharePoint.Library.SPRequest.UpdateRoleAssignment(String bstrUrl, Guid& pguidScopeId, Int32 lPrincipalID, Object& pvarArrIdRolesToAdd, Object& pvarArrIdRolesToRemove) at Microsoft.SharePoint.SPRoleAssignmentCollection.UpdateAssignment(Int32 principalId, SPRoleDefinitionBindingCollection bindings, Boolean addOnly) at Microsoft.SharePoint.SPRoleAssignment.Update() at Microsoft.SharePoint.SPSecurableObjectImpl.BreakRoleInheritance(Boolean CopyRoleAssignments) at Microsoft.SharePoint.SPListItem.BreakRoleInheritance(Boolean CopyRoleAssignments) at XArgoEntryDev2.FormCode.btn_addFolder_Clicked(Object sender, ClickedEventArgs e) at Microsoft.Office.InfoPath.Server.SolutionLifetime.ButtonEventHost.<>c__DisplayClass6.<>c__DisplayClassa.<add_Clicked>b__3() at Microsoft.Office.InfoPath.Server.Util.DocumentReliability.InvokeBusinessLogic(Thunk thunk) at Microsoft.Office.InfoPath.Server.SolutionLifetime.ButtonEventHost.<>c__DisplayClass6.<add_Clicked>b__2(Object sender, ClickedEventArgs e) at Microsoft.Office.InfoPath.Server.SolutionLifetime.ButtonEventHost.FireClickedEvent(Object sender, ClickedEventArgs args) at Microsoft.Office.InfoPath.Server.SolutionLifetime.ButtonFormCode.<>c__DisplayClass2.<>c__DisplayClass5.<Click>b__1() at Microsoft.Office.InfoPath.Server.DocumentLifetime.OMExceptionManager.CallFormCodeWithExceptionHandling(UserMessages userMessages, OMCall d)