Как запустить команды с повышенными привилегиями в Windows SharePoint Services 3.0? - PullRequest
1 голос
/ 11 февраля 2010

Я использую аутентификацию по формам для входа в службу windows sharepoint servevices 3.0. Мне нужно повысить во время анонимного доступа права на добавление записи в список портала sharepoint.

Я нашел подсказку в msdn: http://msdn.microsoft.com/en-us/library/bb466220%28classic%29.aspx

Но это не работает для меня. :( Это все еще вызывает логин и пароль пользователя.

Кто-нибудь может мне помочь, пожалуйста?

Public Function AddUserAccountData() As String
        SPSecurity.RunWithElevatedPrivileges(AddressOf AddUserAccountDataToSPList)
        Return ""
    End Function

    Private Sub AddUserAccountDataToSPList()
        Dim oSharedConfig As SharedConfig = SharedConfig.Instance
        Dim sListName As String = oSharedConfig.oWebPartsOpt.UserOpt.AccountVerificationList.Name

        Using oSite As SPWeb = SPContext.Current.Web
            Dim oUserAccStatusList As SPList = oSite.Lists(sListName)

            oUserAccStatusList.Items.Add()
            Dim oSPListItem As SPListItem = oUserAccStatusList.Items.Add()

            oSPListItem("one") = _sUserLogin
            oSPListItem("two") = _sUserGuid
            oSPListItem("three") = False
            oSPListItem("four") = DateTime.Now

            oSPListItem.Update()
        End Using
    End Sub

Ответы [ 2 ]

2 голосов
/ 11 февраля 2010

При использовании RunWithElevatedPrivileges не следует использовать SPContext.Current - он по-прежнему имеет старые разрешения. Вы должны снова открыть свой SPWeb, чтобы дать ему необходимые разрешения. В вашем связанном коде это делается следующими строками:

using (SPSite ElevatedsiteColl = new SPSite(siteColl.ID))
using (SPWeb ElevatedSite = ElevatedsiteColl.OpenWeb(site.ID))

Источник:
RunWithElevatedPrivileges, обратите внимание на контекст сайта
Добавление элементов в список SharePoint - из моего блога может помочь решить следующую проблему.

Еще одно примечание: вы не должны писать Using oSite As SPWeb = SPContext.Current.Web. SPContext объекты не должны утилизироваться вами - они совместно используются различными компонентами, поэтому это может привести к другим исключениям.
Это распространенная ошибка - по моему мнению, API могла бы сделать это лучше.

0 голосов
/ 16 февраля 2010

Линия

oUserAccStatusList.Items.Add()

выглядит немного не так. Получив ссылку на SPList, вы создаете новый listItem, как в следующем коде, вызывая Items.Add для listItem, задайте свои свойства и затем вызывайте метод Update.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...