1
사용자가 폴더를 만들 때 자동으로 13 개의 하위 폴더를 만드는 이벤트 수신기가 있습니다. 아래 코드는 이것을 할 수 있으며 관리자 계정이 폴더를 만들 때 모든 것이 정상입니다. 그러나 다른 사용자의 경우 하위 폴더는 오류없이 생성되지 않습니다. Sharepoint 2010 이벤트 수신기는 관리자 계정에서만 작동합니다.
public override void ItemAdded(SPItemEventProperties properties)
{
base.ItemAdded(properties);
SPWeb web = properties.OpenWeb();
web.AllowUnsafeUpdates = true;
SPDocumentLibrary docLib = (SPDocumentLibrary)web.List[properties.ListId];
if (properties.ListItem.ContentType.Name == "Folder"
&& properties.ListItem.Folder.ParentFolder.ToString().ToLower().EndsWith("opportunity"))
{
String url = properties.ListItem.ParentList.RootFolder.ServerRelativeUrl.ToString();
SPFolder libFolder = properties.ListItem.Folder;
string newFolderUrl = (web.Url + "/" + libFolder.ToString());
foreach (string subfolder in folders)
{
SPListItem newFolder = docLib.Items.Add(newFolderUrl, SPFileSystemObjectType.Folder, subfolder);
newFolder.Update();
}
}
}
나는 SPSite 및 SPWeb를 상승에 대한 많은 글을 읽고 난 하위 폴더를 생성하기 전에 개체를 제고 할 수있는 코드를 썼다. 그러나 아래 코드는 작동하지 않습니다.
public override void ItemAdded(SPItemEventProperties properties)
{
Guid siteId = properties.SiteId;
Guid webId = properties.OpenWeb().ID;
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite elevatedSite = new SPSite(siteId))
{
using (SPWeb web = elevatedSite.OpenWeb(webId))
{
base.ItemAdded(properties);
web.AllowUnsafeUpdates = true;
SPDocumentLibrary docLib = (SPDocumentLibrary)web.Lists[properties.ListId];
if (properties.ListItem.ContentType.Name == "Folder"
&& properties.ListItem.Folder.ParentFolder.ToString().ToLower().EndsWith("opportunity"))
{
String url = properties.ListItem.ParentList.RootFolder.ServerRelativeUrl.ToString();
SPFolder libFolder = docLib.RootFolder.SubFolders[properties.ListItem.Name];
SPFolder libFolder = properties.ListItem.Folder;
string newFolderUrl = (web.Url + "/" + libFolder.ToString());
foreach (string subfolder in folders)
{
SPListItem newFolder = docLib.Items.Add(newFolderUrl, SPFileSystemObjectType.Folder, subfolder);
newFolder.Update();
}
}
web.AllowUnsafeUpdates = false;
}
}
});
}
아무도 문제를 해결할 수 있습니까? 모든 사용자는 홈 구성원이므로 폴더를 수동으로 만들 수 있습니다.
무엇이 오류입니까? –