1

我正在使用表单身份验证登录到 windows sharepoint servicevices 3.0 服务。我需要在匿名访问期间提升将记录添加到共享点门户列表的权限。

我在 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
4

2 回答 2

2

使用时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 可以做得更好。

于 2010-02-11T20:59:05.443 回答
0

线

oUserAccStatusList.Items.Add()

看起来有点不对劲。一旦你有了对 SPList 的引用,你listItem就像在下面的代码中一样创建一个新的,通过调用Items.Addon listItem,设置你的属性,然后调用Update方法。

于 2010-02-16T16:48:07.547 回答