SharePoint – DateTimeControl – unexpected error – iframe – Object reference not set to an instance of an object

Problème

Dans une solution existante, j’ai un contrôle de type DateTime:

<Sharepoint:DateTimeControl ID="DateTimeControl1"  dateonly="true" ShowWeekNumber="true" FirstDayOfWeek="1" FirstWeekOfYear="2" runat="server" EnableViewState="true"></sharepoint:DateTimeControl>

Cependant au lieu d’avoir le contrôle, j’ai eu un message d’erreur à la place (An unexpected error has occurred):

2014-12-10_09-45-35

 

Dans le log ULS:

Medium Application error when access /_layouts/15/iframe.aspx, Error=Object reference not set to an instance of an object. at Microsoft.SharePoint.Utilities.SPUtility.GetThemedImageUrl(String originalUrl, String themeKey) at Microsoft.SharePoint.WebControls.DatePicker..ctor() at Microsoft.SharePoint.WebControls.SPDatePickerControl.InitDatePicker() at Microsoft.SharePoint.WebControls.SPDatePickerControl.set_ShowWeekNumber(Boolean value) at Microsoft.SharePoint.ApplicationPages.DatePickerFrame.Page_Load(Object sender, EventArgs e) at System.EventHandler.Invoke(Object sender, EventArgs e) at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
Unexpected System.NullReferenceException: Object reference not set to an instance of an object. at Microsoft.SharePoint.Utilities.SPUtility.GetThemedImageUrl(String originalUrl, String themeKey) at Microsoft.SharePoint.WebControls.DatePicker..ctor() at Microsoft.SharePoint.WebControls.SPDatePickerControl.InitDatePicker() at Microsoft.SharePoint.WebControls.SPDatePickerControl.set_ShowWeekNumber(Boolean value) at Microsoft.SharePoint.ApplicationPages.DatePickerFrame.Page_Load(Object sender, EventArgs e) at System.EventHandler.Invoke(Object sender, EventArgs e) at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

 

Solution

Il faut créer une collection site à la racine de l’application web (/).

Simple, mais SharePoint est capricieux comme toujours.

 

Project Server 2013 – Access to the registry key ‘Global’ is denied

Problème

Toutes les minutes, dans les journaux ULS, vous constatez cette erreur:

  • Process: Microsoft.Office.Project.Server
  • Produit: Project Server
  • Catégorie: Project Calculation Service
Timer Task thread crashed System.UnauthorizedAccessException: Access to the registry key 'Global' is denied. 
 at Microsoft.Win32.RegistryKey.Win32Error(Int32 errorCode, String str) 
 at Microsoft.Win32.RegistryKey.InternalGetValue(String name, Object defaultValue, Boolean doNotExpand, Boolean checkSecurity) 
 at Microsoft.Win32.RegistryKey.GetValue(String name) 
 at System.Diagnostics.PerformanceMonitor.GetData(String item) 
 at System.Diagnostics.PerformanceCounterLib.GetPerformanceData(String item) 
 at System.Diagnostics.PerformanceCounterLib.get_CategoryTable() 
 at System.Diagnostics.PerformanceCounterLib.CounterExists(String category, String counter, Boolean& categoryExists) 
 at System.Diagnostics.PerformanceCounterLib.CounterExists(String machine, String category, String counter) 
 at System.Diagnostics.PerformanceCounter.InitializeImpl() 
 at System.Diagnostics.PerformanceCounter..ctor(String categoryName, String counterName, String instanceName, Boolean readOnly) 
 at System.Diagnostics.PerformanceCounter..ctor(String categoryName, String counterName, String instanceName) 
 at Microsoft.Office.Project.Server.BusinessLayer.PcsEngine.PcsPerfCounter.<.ctor>b__0() 
 at System.Lazy`1.CreateValue() --- End of stack trace from previous location where exception was thrown --- 
 at System.Lazy`1.get_Value() 
 at Microsoft.Office.Project.Server.BusinessLayer.PcsEngine.PcsPerfCounter.EnsureSampleDataTask() 
 at Microsoft.Office.Project.Server.BusinessLayer.PcsEngine.PcsTaskWorker.PerformTasksCallback(Object obj) StackTrace: 
 at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
 at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
 at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() 
 at System.Threading.ThreadPoolWorkQueue.Dispatch()

Solution

Project Server maintient des compteurs de performances le concernant. Il doit donc avoir les droits de le faire. Il faut ajouter le compte qui démarre les services Project Server aux groupes locaux suivants:

  • Performance Log USers
  • Performance Monitor Users

Il faut ensuite redémarrer les services Project Server quand la file d’attente n’a pas de travail.

SharePoint 2013 – NodeRunnerQuery et NodeRunnerAdmin – erreurs accès SQL

Problème

Dans les journaux ULS de SharePoint, vous constatez ces messages en boucle:

  • Unable to get sql session to admin database
  • NerioCluster: No lease returned when reading DB

2014-10-05_10-58-11

Solution

Le service de recherche est démarré dans les services, mais aucune application de recherche n’est crée.

Il faut soit créer une application de recherche soit arrêter le service depuis l’administration centrale:

2014-10-05_11-01-38

SharePoint 2013 – MsiInstaller – 1015 – Failed to connect to server. Error: 0x80070005

Problème

Tous les soirs dans les journaux d’événements vous constatez cet avertissement:

Failed to connect to server. Error: 0x80070005

2014-08-03_16-37-25

En revanche vous n’avez pas les erreurs DCOM généralement associées.

Solution

  1. Rendre temporairement administrateur local le compte admin de la ferme (celui qui démarre le service SharePoint Timer)
  2. Via le prompt PowerShell de SharePoint: Get-SPProduct -local
  3. Via le prompt PowerShell de SharePoint: (get-spserver $env:computername).NeedsUpgrade
  4. Lancer manuellement le travail du timer qui génère cette alerte: Get-SPTimerJob job-admin-product-version | Start-SPTimerJob
  5. Vérifier que cette erreur n’est plus présente dans les journaux après son exécution
  6. Enlever le compte des administrateurs locaux
  7. Redémarrer le service SharePoint Timer
  8. Lancer manuellement le travail du timer qui génère cette alerte: Get-SPTimerJob job-admin-product-version | Start-SPTimerJob
  9. Vérifier que cette erreur n’est plus présente dans les journaux après son exécution

Microsoft Project – livrable – fichiers srchui.dll et jscript.dll

Depuis Microsoft Project 2010 et 2013, en utilisant le menu de gestion des livrables, vous obtenez:

23-03-2014 12-09-39Ce message qui semble venir d’outre tombe de la version 2003 apparaît au lieu du panneau latéral.

Inutile de les chercher sur votre machine, vous ne les avez certainement pas.

C’est en fait un problème avec la zone « Internet » de internet explorer, même si votre serveur Project est dans la zone « intranet ».

La zone internet ne doit pas être avec le curseur au maximum en haut, sinon les livrables Project ne fonctionnent plus.

26-03-2014 07-43-13

Le tout même sur Windows Server 2012 R2 + Project 2013 SP1 + IE 11 complètement à jour…

 

 

SharePoint/Project 2013 SP1 – Configuration wizard

Après avoir déployé le Service Pack 1 de SharePoint/Project 2013, il faut passer le configuration wizard. Dans le cas présent, il échouait sur tous les noeuds avec la même erreur dans le log:

SyncUpgradeTimerJob: sleeping for 10 seconds
SyncUpgradeTimerJob: sleeping for 10 seconds
SyncUpgradeTimerJob: Upgrade timer job failed. Return -1.
The exclusive inplace upgrader timer job failed.

 

Etape 1 – autre log

Un autre log est beaucoup plus utile, au même endroit, il porte le nom upgrade-date-blahblah-error.log:

Exception: The operation cannot be performed on database "WSS_UsageApplication" because it is involved in a database mirroring session or an availability group. Some operations are not allowed on a database that is participating in a database mirroring session or in an availability group.  ALTER DATABASE statement failed

Ou alors en utilisant la commande upgrade-spfarm:

29-03-2014 12-55-19

 

Solution

Supprimer le miroir ou always-on le temps de l’upgrade sur cette base.

 

 

SharePoint – User profile – ResetSynchronizationDatabase : Operation is not valid due to the current state of the object

Problème

En voulant faire un reset de la base de synchronisation UPS de SharePoint, j’ai eu le message d’erreur suivant:

PS C:\> $upa.ResetSynchronizationDatabase()
 Exception calling "ResetSynchronizationDatabase" with "0" argument(s):
 "Operation is not valid due to the current state of the object."
 At line:1 char:1
 + $upa.ResetSynchronizationDatabase()
 + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 + CategoryInfo : NotSpecified: (:) [], MethodInvocationException
 + FullyQualifiedErrorId : InvalidOperationException

Solution

La base est en fait en miroir SQL. Au même moment, dans les journaux du serveur SharePoint:

event_5586

Il faut d’abord supprimer le miroir puis recommencer.

 

 

Spécialiste Microsoft, un avenir sombre ?

Cet article fait partie d’une série. Voici le premier !

 

J’imagine que l’actualité Microsoft ne vous aura pas échappée depuis quelques mois, et que Microsoft n’est plus seulement un « éditeur de logiciel ».

Bien que cet article porte particulièrement sur l’offre phare Office 365 de Microsoft, quelques nouvelles inquiétantes :

  • Microsoft soucieux d’apprendre comment Yammer (qui ne fait que du SaaS) fait pour livrer aussi souvent des nouveautés. L’intégration complète avec SharePoint et pour la version office365 pour l’instant.
  • Fin des abonnements Technet. Le « remplacement » proposé est d’utiliser les versions d’évaluations. On a tous le temps de réinstaller toute notre plateforme de test à intervalle régulière, c’est sûr. Sinon y a toujours MSDN, mais l’abonnement est autour de 6000€ pour avoir les mêmes droits. Pétition ici.
  • Windows 8.1/2012R2 est RTM mais n’est accessible qu’aux fabricants de matériels. Exit les Technet (qui l’ont encore), les MSDN et autres. Tout ce beau monde l’aura…en même temps que tout le monde.
  • Doublement du stockage sur Office 365 pour le même prix.
  • Fin des certifications MCM. Microsoft ne reconnaitra plus de « gourous » sur ses produits.

Microsoft a bien saisi les avantages de fournir du SaaS plutôt que de vendre ses solutions. Sauf que ce dernier a toujours reposé sur des partenaires pour compléter leurs offres et promouvoir leurs produits… Et des ingénieurs pour les déployer.

Bien que tout cela mette du temps avant d’impacter les admins/ingénieurs/experts/architectes utilisant fortement les technologies Microsoft, il vaut peut-être mieux anticiper un plan B « au cas où ».

SharePoint: The local farm is not accessible. Cmdlets with FeatureDependencyId are not registered

Top des possibilités:

  • le prompt Powershell n’est pas lancé en mode administrateur (prompt UAC)
  • Vous n’êtes pas administrateur local
  • Vous n’avez pas accès aux bases SQL. Le snapin doit se connecter à la base de configuration de la ferme.

Histoire de ne pas faire le post le plus court de l’année, vous pouvez vérifier avec Process Explorer si vous êtes vraiment administrateur (aka UAC elevated):

  • Deny : vous êtes membres mais UAC vous bloque. Il faut relancer en run as administrator
  • Owner: vous êtes bien administrateur avec UAC elevated. Donc c’est SQL le problème 😉

06-05-2013 22-52-21

06-05-2013 22-53-32

 

SharePoint – event 8311 – SSL policy errors have been encountered. Error code 0x2

 

 

 

 

SharePoint n’est pas avare en message, et ils ont presque toujours une origine, reste à trouver laquelle…

Cette fois, le message suivant est apparu sur la ferme 2010 et 2013:
sharepoint event 8311

Ce qui donne:

Log Name: Application
Source: Microsoft-SharePoint Products-SharePoint Foundation
Event ID: 8311
Task Category: Topology
Level: Error
Description:
An operation failed because the following certificate has validation errors:\n\nSubject Name: CN=Server.mydomain.net\nIssuer Name: CN=my-CA, DC=mydomain, DC=net

Errors:\n\n SSL policy errors have been encountered. Error code '0x2'..

 

Cause

Un certificat a été assigné dans IIS pour le site SharePoint Web Services (binding SSL port 32844).

 

Résolution

Le problème ne vient pas de la confiance du certificat, mais du subject name. Il s’avère que le serveur est enregistré avec le nom court dans la ferme, et que le certificat contient le FQDN.

2 solutions:

  • Générer un autre certificat avec un subject name qui correspond au serveur,
  • Renommer le serveur dans la ferme SharePoint.

C’est cette deuxième option qui a été renommé, à faire en PowerShell.

Lister les serveurs avec leur nom inscrit dans la ferme:

get-spserver

Renommer un serveur (à lancer localement sur le serveur):

Rename-SPServer -Identity MyServer -Name MyServer.MyDomain.net

Faire un iisreset ensuite, et patienter 10mn que la topology se mette à jour 🙂