我有一个发布页面代表一个人(如果您愿意的话,联系表单),并且我想让用户可以编辑表单中的一些信息,年龄,地点...)。以编程方式更新当前页面属性时的权限问题
所以我有一个编辑按钮,打开一个弹出式窗口,其属性允许用户更新。
现在的问题是:当用户按下保存按钮时,抛出异常,说用户没有更新页面的权限。这发生在我尝试无论是检出或更新页面
我的代码是这样的:
Guid siteId = SPContext.Current.Site.ID;
Guid webId = SPContext.Current.Web.ID;
SPSecurity.RunWithElevatedPrivileges(delegate()
{
//SPWeb currentWeb = SPContext.Current.Web;
using (SPSite site = new SPSite(siteId))
{
using (SPWeb currentWeb = site.OpenWeb(webId))
{
currentWeb.AllowUnsafeUpdates = true;
PublishingPage pubPage = PublishingPage.GetPublishingPage(SPContext.Current.ListItem);
pubPage.CheckOut();
pubPage.ListItem["EdificioContacto"] = dpEdificio.SelectedValue.ToString();
pubPage.ListItem["ExtensaoContacto"] = txtExtensao.Text;
pubPage.ListItem["FaxContacto"] = txtFax.Text;
pubPage.Update();
pubPage.ListItem.File.CheckIn("Alteracão de dados de utilizador. Processo automático");
pubPage.ListItem.File.Publish("Alteracão de dados de utilizador. Processo automático");
pubPage.ListItem.File.Approve("Alteracão de dados de utilizador. Processo automático");
currentWeb.AllowUnsafeUpdates = false;
}
}
谁能帮助?
编辑:我的例外是“无法评估表达式,因为代码已优化或本机框架在调用堆栈之上”。
我以前在另一个类上有过这个例外,但是它是通过使用webId和siteId打开网站和网站来解决的,所以我认为那样会解决问题。
编辑2:我注意到,这种情况也发生,当我尝试以一个“普通”用户登录时以编程方式将项目添加到SharePoint列表中。
该布尔返回false。至于第二个链接,它没有发起异常,但是页面的属性没有得到更新。 – user1242471 2012-03-12 16:42:53
尝试PublishingPage.CheckOut方法文档示例..可能会解决您的问题。 – 2012-03-13 07:44:33
没有骰子,条件“publishingPage.ListItem.File.CheckOutStatus == SPFile.SPCheckOutStatus.None”是真的,所以它试图检查输出页面,但在该指令中抛出异常... – user1242471 2012-03-13 10:38:55