Nous avons un ensemble de code qui va être utilisé dans ASP.NET autonome et SharePoint. Je me demande s'il existe un moyen légitime d'écrire du code conditionnel dans le fichier CS pour détecter si SharePoint est présent?détecter si un ASCX/ASPX s'exécute dans SharePoint?
Il doit pouvoir s'exécuter dans ou avant OnPreInit, car en fonction de cette décision, nous allons changer l'attribut MasterPageFile, et cela doit être fait au début du cycle de vie de la page. Je suppose que je peux faire quelque chose comme vérifier l'existence d'un répertoire "~/layouts", etc. mais il doit y avoir une meilleure façon de le faire. Et d'ailleurs, qui sait - pour des raisons de compatibilité (emplacement des images, etc.), nous pourrions effectivement adopter la structure de répertoires SharePoint dans le mode autonome ASP.NET.
Il est possible d'avoir besoin de Microsoft.SharePoint.DLL même s'il est pratiquement inutilisé lors de l'utilisation de Standalone.
Merci!
Malheureusement, j'ai essayé cela, et il se bloque sur une machine qui n'a pas réellement installé SharePoint. C'est correct pour moi de référencer la DLL, mais cela doit fonctionner quand le SP lui-même n'est pas présent. –
Voici le trace de la pile pour ceux qui sont curieux - [NullReferenceException: objet de référence non définie à une instance d'un objet.] Microsoft.SharePoint.Utilities.SPUtility.AlternateServerUrlFromHttpRequestUrl (url Uri) +27 de Microsoft.SharePoint.Administration. SPAlternateUrl.get_ContextUri() +135 Microsoft.SharePoint.WebControls.SPControl.SPWebEnsureSPControl (contexte HttpContext) +237 de Microsoft.SharePoint.WebControls.SPControl.GetContextWeb (HttpContext contexte) +25 Microsoft.SharePoint.SPContext.get_Current() + 107 –
Si l'exception que vous avez mentionnée est levée lorsque vous accédez à SPContext.Current, alors ma 2ème approche ci-dessus pourrait fonctionner pour vous. La solution de Nat ci-dessous est meilleure d'un point de vue architectural, cependant. –