我们在webpart中有以下代码:
using (SPSite site = new SPSite("http://localhost/"))
{
using (SPWeb web = site.OpenWeb())
{
SPList list = web.SiteUserInfoList;
if (!list.Fields.ContainsField("Office"))
{
list.Fields.Add("Office", SPFieldType.Text, false);
list.Update();
}
}
}
在我们向列表中添加项目的第4行中,我们收到此错误:“GET请求当前不允许更新。要允许GET上的更新,请在 SPWeb上设置'AllowUnsafeUpdates'属性”
然后我们在将项目添加到列表之前添加了这一行:
web.AllowUnsafeUpdates = true;
现在我们收到此错误: “您目前已登录为: [域名] \用户名”。 以其他用户身份登录。
我们使用的帐户也有管理权限。 知道我们如何能够执行以下代码:
web.AllowUnsafeUpdates = true;
list.Fields.Add("Office", SPFieldType.Text, false);
list.Update();
答案 0 :(得分:1)
按照以下方式运行:
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite site = new SPSite(web.Site.ID))
{
using (SPWeb web = site.OpenWeb())
{
SPList list = web.SiteUserInfoList;
if (!list.Fields.ContainsField("Office"))
{
list.Fields.Add("Office", SPFieldType.Text, false);
list.Update();
}
}
}
});
需要运行具有完全控制权限的代码:) 但我们不应该用这种方式写出所有的鳕鱼。