Nous avons une solution que nous avons élaborée pour une batterie MOSS dont une inclut un travail de minuteur. Ce travail a fonctionné très bien pendant des mois. Récemment, l'administrateur a enrôlé un autre serveur dans la batterie et notre travail de minuteur a démarré automatiquement sur cette nouvelle machine. Dès que ce changement s'est produit, notre travail de minuteur a commencé à produire l'erreur ci-dessous (trouvée dans les journaux SP). Au début, je pensais que c'était un problème de droits, mais le service de minuterie sur la machine où il travaillait auparavant et le nouveau fonctionnent sous le même compte de domaine. Cela semble échouer lors de la mise en boucle de la liste de sites dans une collection de sites, sur l'un des sites/sites Web (extrait de code ci-dessous). Je sais que ce compte de domaine a accès à cela parce qu'il fonctionne sur l'autre boîte sous le même compte. Quelqu'un at-il des idées sur la raison de cette erreur cryptique? Ou si une procédure spéciale doit être effectuée sur cette nouvelle machine pour s'assurer qu'elle dispose des LCA appropriées pour toutes les bases de données de la batterie MOSS?Site MOSS 2007 dans une exception d'initialisation de type de batterie
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)
Exception:
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)
Quel est le type de l'exception? –
il s'agit d'une exception TypeInitializerException. Il semble qu'il provienne d'un problème d'accès au niveau SQL au contenu db. Mais comme je l'ai dit plus haut, le service de minuterie fonctionne sous un compte de domaine avec des privilèges suffisants.Je le sais parce que je me suis connecté au studio de gestion SQL avec ce compte et que j'ai pu accéder à tout ce qui se trouve dans le contenu de la base de données. – James
Avez-vous de la chance d'essayer de déboguer ou de regarder dans l'exception interne? C'est là que la vraie information sera. –