2010-07-15 35 views
1

我需要測試我的業務創建的sharepoint解決方案。我創建了一個簡單的exe文件,可以在實際的SharePoint服務器上運行。使用Sharepoint服務器對象模型測試Sharepoint解決方案

我想弄清楚如何使用Sharepoint服務器OM來做我的測試。在這一點上我所要做的只是將一個項目添加到庫中。

我的第一個解決方案做了這樣的事情:

SPSite site = SPContext.Current.Site; 
SPWeb web = site.OpenWeb(); 
etc... 

的這裏的問題是SPCOntext.Current.Site總是空。

我的一次新的嘗試看起來是這樣的:

SPSite site = new SPSite(url); 
SPWeb web = site.OpenWeb(); 
SPList list = web.Lists[listName]; 
SPListItem item = list.AddItem(); 
item["Title"] = "Some Title"; 
item.Update(); 

這種運行沒有任何錯誤,但是當我有問題檢查清單,我添加的項目是不存在的。

任何人都可以幫助指導我到哪裏去錯了嗎?

回答

2

試試下面的代碼:

using(SPSite site = new SPSite(url)) 
using(SPWeb web = site.OpenWeb()) 
{ 
    SPList list = web.Lists[listName]; 
    SPListItem item = list.AddItem(); 
    item["Title"] = "Some Title"; 

    web.AllowUnsafeUpdates = true; 
    item.Update(); 
    list.Update(); 
    web.AllowUnsafeUpdates = false; 
} 

您可能不需要AllowUnsafeUpdates(不記得現在),但我幾乎可以肯定,你必須更新名單。

+0

工作就像一個魅力。萬分感謝! 我確實需要包含AllowUnsafeUpdates。這是什麼原因?我可以附加一個用戶名和pwd以某種方式避免這種情況? – cmptrer 2010-07-15 21:57:41

+0

它必須符合事實,即您調用構造函數而不是從SPContext獲取對象。順便說一句,SPContext爲空,因爲您在HTTP請求的上下文之外使用它。 SPContext是HTTPContext的SharePoint版本。 此外,我已更新我的原始代碼塊,以包括使用語句,以確保正確的對象處置。 – knight0323 2010-07-16 04:19:57

+0

AllowUnsafeUpdates允許你在沒有通過表單摘要檢查的情況下更新HTTP請求的上下文。 E.g.在Web部件的顯示上而不是回發的響應。 你不需要它的控制檯類型的應用程序,沒有HTTP上下文(這是SPContext不會工作的原因)。 http://hristopavlov.wordpress.com/2008/05/16/what-you-need-to-know-about-allowunsafeupdates/ – Ryan 2010-07-16 11:05:31