0

我是 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;
4

2 回答 2

0

如果真的没有更新,那么据我所知,没有必要设置SPWeb.AllowUnsafeUpdates = true. 要了解此属性的作用,我们可以引用MSDN 文档

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

更进一步:

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

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

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

于 2015-04-17T11:33:24.370 回答
0

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

于 2015-10-14T13:04:09.963 回答