我试图将当前用户登录我的MVC 5应用程序(使用Windows身份验证)放入新ListItem的Author和Editor字段中。
我没有成功将用户凭据传递到SharePoint客户端上下文,因此我尝试使用SharePoint客户端对象模型编辑这两个字段
using SP = Microsoft.SharePoint.Client;
...
SP.User SPuser = context.Web.EnsureUser(Request.LogonUserIdentity.Name);
//SP.User SPuser = context.Web.EnsureUser("mydomain\\someuser"); //same result as above
context.Load(SPuser);
context.ExecuteQuery();
SP.FieldUserValue userValue = new SP.FieldUserValue();
userValue.LookupId = SPuser.Id;
SP.ListItem documentLi = documentFile.ListItemAllFields;
...
//We don't want the application pool identity here, but the current user
documentLi["Author"] = userValue;
documentLi["Editor"] = userValue;
documentLi.Update();
context.ExecuteQuery();
它在localhost中工作正常,但在服务器上尝试时没有任何反应:这两个字段保留了应用程序池标识。
我错过了什么?
答案 0 :(得分:0)
我发现问题是什么:在localhost中,应用程序池标识是我的用户,它对共享点列表具有完全控制权,而不像IIS中的应用程序池标识(它只有贡献权限),一旦我用它提升它就可以正常工作完全控制。