2012-10-30 84 views
0

這個代碼是在該行oJob.Update();無法激活工作在SharePoint 2010

string JOB_NAME = "TestJob"; 
using (SPSite oSite = new SPSite("http://mysite", SPUserToken.SystemAccount)) 
{ 
NotifyJob oJob = new NotifyJob(JOB_NAME, oSite.WebApplication); 
SPMinuteSchedule schedule = new SPMinuteSchedule(); 
schedule.BeginSecond = 0; 
schedule.EndSecond = 59; 
schedule.Interval = 30; 
oJob.Schedule = schedule; 
oSite.AllowUnsafeUpdates = true; 
SPSecurity.RunWithElevatedPrivileges(delegate() 
{ 
oJob.Update(); 
}); 
oSite.AllowUnsafeUpdates = false; 
} 



Error: System.Security.SecurityException: Access denied. 
at Microsoft.SharePoint.Administration.SPPersistedObject.BaseUpdate() 
at Microsoft.SharePoint.Administration.SPJobDefinition.Update() 

回答

1

首先的一個錯誤,請檢查該解決方案適用於您的方案。從你的代碼我猜你是從某種webpart/page執行它。

http://unclepaul84.blogspot.com/2010/06/sppersistedobject-xxxxxxxxxxx-could-not.html

第二件事情是RunWithEvelatedPrivileges下應用程序池的身份執行代碼。如果您是從正常的SharePoint內容網站集執行此操作,該內容網站集是在不同的應用程序池(以及帳戶 - 它應該如何)上運行的,那麼您可能無法訪問需要服務器場管理員權限的計時器作業。

+0

我農場的管理員權限,從ApplicationPage這個代碼,當我嘗試激活在SharePoint空要素但是當我使用EventResiever激活功能時,功能會出錯/ – alexandrovdi

+0

如果有問題的功能是網站/網站功能,則需要通過農場機器上的powershell激活它,而不是通過gh遠程客戶端上的用戶界面,由於馬立克鏈接的原因。 (或者,您可以在該鏈接中停用安全功能,但僅作爲全局設置,因此我不會推薦它。) – Rawling

0

不從SPSite/SPWeb構建器獲取網站或網站。 你應該把它從SPFeatureReceiverProperties

public override void FeatureActivated(SPFeatureReceiverProperties properties) 
{ 
    SPWeb web = properties.Feature.Parent as SPWeb; 
    NotifyJob oJob = new NotifyJob("TestJob", web.Site.WebApplication); 
    SPMinuteSchedule schedule = new SPMinuteSchedule(); 
    schedule.BeginSecond = 0; 
    schedule.EndSecond = 59; 
    schedule.Interval = 30; 
    oJob.Schedule = schedule; 
    oJob.Update(); 
} 

SPSite site = properties.Feature.Parent as SPSite; 

如果你的功能範圍網站

+0

不起作用 – alexandrovdi

+0

同樣異常? –

+0

是的。我使用多服務器場。 Wsp被安裝,但是當嘗試激活功能時出現這個錯誤。部署步驟「激活組件」時出錯:組件ID「951904dc-c26a-4a83-95c2-xxxxx」未安裝在此服務器場中,且無法添加到此區域。 – alexandrovdi

相關問題