我们有一些针对MOSS农场建立的解决方案,其中一个包含计时器作业。这份工作几个月来一直很好。最近,管理员向服务器场征用了另一台服务器,我们的计时器作业自动开始在这台新机器上运行。只要这个开关发生,我们的计时器作业开始产生下面的错误(在SP日志中找到这个错误)。MOSS 2007网站在农场类型初始值设定项例外
起初我以为这是一个供应问题,但是它之前的机器上的计时器服务和新服务器在同一个域帐户下运行。在站点集合中,只在其中一个站点/网站(以下代码段)中循环站点列表时,似乎失败。我知道这个域帐户可以访问这个帐户,因为它可以在同一个帐户下的另一个框中工作。有没有人有任何想法,为什么这个神秘的错误发生?或者如果需要在这台新机器上执行任何特殊过程以确保它对MOSS场中的所有数据库都有适当的ACL?
代码:
public static void Main(string[] args)
{
SPSecurity.RunWithElevatedPrivileges(delegate() { setInputParameters(); });
}
private static void setInputParameters()
{
SPFarm farm = SPFarm.Local;
SPWebService service = farm.Services.GetValue<SPWebService>("");
foreach (SPWebApplication webApp in service.WebApplications)
{
foreach (SPSite siteCollection in webApp.Sites)
{
using(siteCollection)
{
siteCollection.CatchAccessDeniedException = false;
try
{
/* Here is the line that it fails on */
foreach (SPWeb web in siteCollection.AllWebs)
例外:
The Execute method of job definition LMSDataImport (ID 4b37b285-ef8a-407c-8652-391639449790) threw an exception.
More information is included below.
The type initializer for 'Microsoft.SharePoint.Administration.SPPersistedObjectCollection`1' threw an exception.
Exception stack trace:
at Microsoft.SharePoint.Administration.SPPersistedObjectCollection`1.get_BackingList()
at Microsoft.SharePoint.Administration.SPPersistedObjectCollection`1.GetEnumerator()
at Microsoft.SharePoint.Administration.SPAlternateUrlCollectionManager.LookupAlternateUrl(Uri canonicalRequestUri)
at Microsoft.SharePoint.Administration.SPAlternateUrl.LookupCore(Uri uri, SPFarm farm)
at Microsoft.SharePoint.Administration.SPWebApplication.Lookup(SPFarm farm, Uri requestUri, Boolean fallbackToHttpContext, SPAlternateUrl& alternateUrl, SiteMapInfo& hostHeaderSiteInfo, Boolean& lookupRequiredContext)
at Microsoft.SharePoint.SPSite..ctor(SPFarm farm, Uri requestUri, Boolean contextSite, SPUserToken userToken)
at Microsoft.SharePoint.SPSite..ctor(SPFarm farm, Uri requestUri, Boolean contextSite)
at Microsoft.SharePoint.Administration.SPSiteCollection.get_Item(String strSiteName)
at Microsoft.SharePoint.Administration.SPSiteCollection.get_Item(Int32 index)
at Microsoft.SharePoint.Administration.SPSiteCollection.ItemAtIndex(Int32 iIndex)
at Microsoft.SharePoint.SPBaseCollection.SPEnumerator.System.Collections.IEnumerator.get_Current()
at LMSDataImporter.setInputParameters()
at Microsoft.SharePoint.SPSecurity.CodeToRunElevatedWrapper(Object state)
at Microsoft.SharePoint.SPSecurity.<>c__DisplayClass4.<RunWithElevatedPrivileges>b__2()
at Microsoft.SharePoint.Utilities.SecurityContext.RunAsProcess(CodeToRunElevated secureCode)
at Microsoft.SharePoint.SPSecurity.RunWithElevatedPrivileges(WaitCallback secureCode, Object param)
at Microsoft.SharePoint.SPSecurity.RunWithElevatedPrivileges(CodeToRunElevated secureCode)
at Axian.AxianCalendar.LMSDataImporter.Main(String[] args)
at Microsoft.SharePoint.Administration.SPTimerJobInvoke.Invoke(TimerJobExecuteData& data, Int32& result)
异常的类型是什么? – 2009-04-21 14:16:49
这是一个TypeInitializerException异常。它似乎源于对内容数据库的SQL级别访问问题。但正如我上面所说的那样,计时器服务在具有足够特权的域帐户下运行。我知道这是因为我使用该帐户登录到SQL管理工作室,并能够访问内容数据库中的所有内容。 – James 2009-04-21 15:45:06
任何幸运的尝试调试或寻找内部异常?这就是真实的信息。 – 2009-04-23 20:24:23