【问题标题】:Does allowunsafeupdates property need to be set while a list item is fetched in sharepoint?在 sharepoint 中获取列表项时是否需要设置 allowunsafeupdates 属性?
【发布时间】:2015-06-22 10:41:48
【问题描述】:

我是 sharepoint 2010 项目的新手。当我浏览代码时,在许多地方我发现 SPWeb.AllowUnsafeUpdates 属性设置为 true,即使列表的任何元素都没有更新。有一些列表数据获取。这是否相关,而任何列表中都没有更新以使用 AllowUnsafeUpdates 设置为 true?

SPWeb thisWeb = workflowProperties.Web;
                        thisWeb.AllowUnsafeUpdates = true;
                        SPList EmployeeDetails = thisWeb.Lists[BasicEmployeeDetailsList];
                        SPList list = workflowProperties.Web.Lists[workflowProperties.List.ID];
                        SPListItem compensatoryLeaveItem = workflowProperties.Item;
                        DataTable creatermail = new DataTable();
                        editurl = workflowProperties.SiteUrl.ToString() + list.DefaultEditFormUrl + "?ID=" + compensatoryLeaveItem["ID"].ToString() + "&Popup=false";
                        string EmployeeDetailsID = compensatoryLeaveItem["Created By"].ToString().Substring(compensatoryLeaveItem["Created By"].ToString().IndexOf('#') + 1);
                        string listQuery = "<Where><Eq><FieldRef Name='LoginName' /><Value Type='User'>" + EmployeeDetailsID + "</Value></Eq></Where>";
                        SPQuery query = new SPQuery();
                        query.Query = listQuery;
                        SPListItemCollection createrCol = EmployeeDetails.GetItems(query);
                        creatermail = createrCol.GetDataTable();
                        createdbymail = creatermail.Rows[0][FieldMail].ToString();
                        creater = creatermail.Rows[0][FieldFullName].ToString();
                        GetHrDetails(thisWeb);
                        thisWeb.AllowUnsafeUpdates = false;

【问题讨论】:

    标签: sharepoint sharepoint-2010 sharepoint-list splistitem


    【解决方案1】:

    如果真的没有更新,据我所知,没有必要设置SPWeb.AllowUnsafeUpdates = true。要了解这个属性在做什么,我们可以引用MSDN documentation

    获取或设置一个布尔值,该值指定是否允许作为 GET 请求的结果或不需要安全验证来更新数据库。

    进一步:

    将此属性设置为 true 会带来安全风险,可能会引入跨站点脚本漏洞。

    因此,这旨在保护您的 SharePoint 网站。您应该尽量不要因为 GET 请求或没有安全验证而更新您的 SharePoint 网站。您可能会在Hristo Pavlov's blog 上发现这个更详细的解释很有用。当我试图理解它时,我做到了。

    您发布的代码似乎没有执行更新,只是读取数据,所以不,我认为这不相关。

    【讨论】:

    • 感谢您的帮助。其实我想知道这段代码在这个函数中做了什么。现在我意识到它可以避免..再次感谢:)
    【解决方案2】:

    这仅在更新期间是必需的。获取数据时不需要。

    【讨论】:

      猜你喜欢
      • 2020-06-24
      • 2011-08-16
      • 1970-01-01
      • 2021-08-08
      • 1970-01-01
      • 1970-01-01
      • 2018-07-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多