Wir haben eine Lösung, die wir gegen eine MOSS-Farm gebaut, von denen einer einen Timer-Job enthält. Dieser Job hat seit Monaten gut funktioniert. Vor kurzem hat der Administrator einen anderen Server in die Farm aufgenommen, und unser Timer-Job wurde automatisch auf diesem neuen Rechner gestartet. Sobald dieser Wechsel stattgefunden hat, hat unser Timer-Job begonnen, den folgenden Fehler zu liefern (gefunden in den SP-Protokollen).MOSS 2007-Site in einer Farm Initialisierer Ausnahme
Zuerst dachte ich, es war ein Rechtsproblem, aber der Timer-Dienst auf der Maschine, wo es zuvor funktioniert hat und die neue läuft unter dem gleichen Domain-Konto. Es scheint zu versagen, während die Site-Liste in einer Websitesammlung auf nur einer der Sites/Webs (Code-Snippet unten) wiederholt wird. Ich weiß, dass dieses Domain-Konto Zugriff darauf hat, weil es auf der anderen Box unter demselben Konto funktioniert. Hat jemand irgendwelche Ideen, warum dieser kryptische Fehler auftritt? Oder ob ein spezieller Vorgang auf dieser neuen Maschine durchgeführt werden muss, um sicherzustellen, dass sie für alle Datenbanken in der MOSS-Farm die richtigen ACLs hat?
Code:
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)
Ausnahme:
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)
Was ist der Typ der Ausnahme? –
ist es eine Ausnahme vom TypInitializerException. Es scheint, dass es von einem Zugriffsproblem auf SQL-Ebene auf die Inhaltsdatenbank stammt. Aber wie ich oben gesagt habe, läuft der Timer-Dienst unter einem Domain-Account mit ausreichenden Privilegien.Ich weiß das, weil ich mich mit diesem Konto in SQL Management Studio eingeloggt habe und auf alles in der Inhaltsdatenbank zugreifen konnte. – James
Irgendein glücklicher Versuch, zu debuggen oder in die innere Ausnahme zu schauen? Dort werden die echten Informationen sein. –