Question

J'ai un SPJobDefinition (WSS) qui s'exécute toutes les heures.En fonction de certaines valeurs, et si elles sont respectées, il ajoute un élément à la liste du calendrier.Cette liste de calendriers comporte un récepteur d'événements attaché à l'événement ItemAdded.

Lorsque le travail se déclenche et ajoute l'élément, des parties du code s'exécutent.Ce que je veux dire, c'est qu'il n'écrira pas dans le journal des événements et qu'il semble avoir des problèmes de lecture à partir du fichier web.config.

Si j'ajoute manuellement un élément à la liste du calendrier, en utilisant mes informations d'identification, tout fonctionne correctement.Autrement dit, j'ai des événements dans le journal des événements et les éléments sont lus à partir du fichier web.config.

Je peux voir où le compte système ajoute l'élément dans la liste du calendrier.J'ai essayé d'ajouter un compte système aux groupes avec un contrôle total et j'ai toujours un problème.

Y a-t-il autre chose que je dois examiner pour que cela fonctionne ?J'ai vérifié l'utilisateur du pool et son service réseau ;Depuis, je les ai également ajoutés au groupe.

Je ne sais pas où chercher.

Merci

Mis à jour (c'est le code que j'utilise pour écrire dans le journal des événements)

try
{
  System.Security.Principal.WindowsImpersonationContext wic = System.Security.Principal.WindowsIdentity.Impersonate(IntPtr.Zero);
  EventLog.WriteEntry(source, message, type);
  wic.Undo();
}
catch (Exception)
{
}
Était-ce utile?

La solution

L'écriture dans le journal des événements peut être due à des autorisations Windows manquantes.

Le travail du minuteur s'exécute dans un service Windows qui n'a pas de web.config.Un récepteur d'événements s'exécute dans n'importe quel processus à l'origine de l'événement.Donc, si vous essayez de lire le web.config du processus en cours, cela échouera.

Si vous essayez d'accéder au système de fichiers pour lire le fichier web.config, il se peut qu'il s'agisse à nouveau d'autorisations Windows.

L'ajout d'utilisateurs à des groupes SharePoint ne peut pas vous aider à accéder au journal des événements ou aux fichiers, ce sont des objets Windows et non des objets SharePoint.

Lors de l'exécution à partir d'un travail programmé, le Impersonate(IntPtr.Zero); ça ne change rien.Il emprunte l'identité du compte de processus qui est déjà celui en cours d'exécution.

Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top