是否有一种方法可以使用Microsoft.sharepoint.client namespace与其他用户一起创建一个新



我们有一个SharePoint列表,每个用户都有权限查看他创建的记录。

我有一个任务来编写生成列表项目的服务,列表项目必须由另一个用户创建的服务器的经过身份验证的用户(出于开头中提到的原因),以查看"创建"该项目的用户。

问题:我们尝试了很多,我们无法将列表项目的创建者更改为已经过身份验证的服务器用户(并不例外,并且成功创建项目)。我们怎么能实现?


约束:

  • 该服务将在SharePoint Server的服务器上运行不是安装在上面的服务器。
  • 我们正在使用Microsoft.SharePoint.Client名称空间,但是如果需要,我们也可以使用SharePoint SOAP服务。

这是代码的草稿:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.SharePoint.Client;
using System.Security;
using Microsoft.SharePoint.Client.UserProfiles;
using System.Net;
namespace SharePointClientSaveWithItherUser
{
    class Program
    {
        static void Main(string[] args)
        {
            UpdateListItem();
        }
        public static void UpdateListItem()
        {
            var siteURL = "http://oportalXXXXXXXXXXXXX";
            var listName = "XXXXX";
            var createdBy = "XXXXXX";
            var modifiedBy = "XXXXXX";
            ClientContext context = new ClientContext(siteURL);
            var login = "XXXXXX";
            var password = "XXXXXX!";
            var securePassword = new SecureString();
            foreach (char c in password)
            {
                securePassword.AppendChar(c);
            }

       //     SharePointOnlineCredentials credentials = new SharePointOnlineCredentials(login, securePassword);
            context.Credentials = new NetworkCredential(login, securePassword, "XXXX"); ;
            List list = context.Web.Lists.GetByTitle(listName);
            FieldUserValue author = GetUsers(context, createdBy);
            FieldUserValue editor = GetUsers(context, modifiedBy);
            ListItemCreationInformation itemCreateInfo = new ListItemCreationInformation();
            ListItem oListItem = list.AddItem(itemCreateInfo);
            oListItem["Title"] = "TEST";
            oListItem["Author"] = author; // its not working the creator of the record is the authanticated user and not the author 
           // oListItem["Editor"] = editor;
            oListItem.Update();
            context.ExecuteQuery();
        }
        //get user by username
        public static FieldUserValue GetUsers(ClientContext clientContext, string UserName)
        {
            FieldUserValue _userValue = new FieldUserValue();
            User _newUser = clientContext.Web.EnsureUser(UserName);
            clientContext.Load(_newUser);
            clientContext.ExecuteQuery();
            _userValue.LookupId = _newUser.Id;
            return _userValue;
        }
    }
}

您可以简单地使用EnsureUser方法,然后将用户的电子邮件地址(user.name@domain.com)或域名(i:0#.w|domainusername)传递给它来解决用户,然后将其分配给作者字段。

ListItem item = list.AddItem(itemCreateInfo);
//use email address of user or login name
var emailAddress = "user.name@tenantname.com"  //or  i:0#.w|domainusername;
var user = context.Web.EnsureUser(emailAddress);
context.Load(user);
context.ExecuteQuery();
ListItem oListItem = list.AddItem(itemCreateInfo);
oListItem["Title"] = "TEST";
oListItem["Author"] = user;                    
oListItem.Update();
context.ExecuteQuery();

相关内容

  • 没有找到相关文章

最新更新