2015-04-16 36 views
0

我是sharepoint 2010項目的新手。當我瀏覽代碼時,在許多地方,我發現SPWeb.AllowUnsafeUpdates屬性設置爲true,即使列表中的任何元素沒有更新。有一些列表數據提取。這是否相關,而在任何列表中沒有更新使用AllowUnsafeUpdates設置爲true?在sharepoint中獲取列表項時是否需要設置allowunsafeupdates屬性?

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; 

回答

0

如果確實沒有更新發生,那麼據我所知,沒有必要設置SPWeb.AllowUnsafeUpdates = true。要理解這是什麼性質做我們可以引用MSDN documentation

獲取或設置一個布爾值,指定是否允許對數據庫的更新作爲GET請求或無需安全驗證的結果。

進一步對:

此屬性設置爲true打開的安全隱患,有可能引入跨站點腳本漏洞。

因此,這是爲保護您的SharePoint網站而設計的。您應該嘗試不要因GET請求或沒有安全驗證而更新您的SharePoint網站。您可能會在Hristo Pavlov's blog上找到更詳細的解釋。當我試圖理解它時,我做了。

您發佈的代碼似乎沒有執行更新,只讀取數據,因此我認爲這不是相關的。

+0

謝謝你的幫助。其實我想知道這段代碼在這個函數中做了什麼。現在我意識到它可以避免..再次感謝:) –

0

這隻在更新期間是必需的。在獲取數據時不需要。

相關問題