Comment vérifier si le code est en cours d'exécution en tant que solution sandbox?

sharepoint.stackexchange https://sharepoint.stackexchange.com/questions/2051

  •  16-10-2019
  •  | 
  •  

Question

Est-il possible de vérifier, à partir de la solution, si elle a été déployée comme sandbox ou non, par exemple quelque chose comme ceci:

if(this.IamSandboxedSolution)
    // do something
else
    // do something else
Était-ce utile?

La solution

Pas hors-the-box AFAIK.

Vous pouvez le vérifier comme ceci:

if(AppDomain.CurrentDomain.FriendlyName ==
    "Sandboxed Code Execution Partially Trusted Asp.net AppDomain") {
    // I'm playing in the sandbox!
}

Autres conseils

AFAIK il n'y a aucun moyen infaillible de le faire, malheureusement. Je sais modèles SharePoint de Microsoft et l'équipe des pratiques utilisent:

AppDomain.CurrentDomain.FriendlyName.Contains("Sandbox")

Donc, si c'est le meilleur qu'ils ont viennent avec, il est juste de dire qui est aussi bon qu'il obtient. De toute évidence, une méthode d'aide statique est la voie à suivre plutôt que d'avoir ce chèque jonché par votre code.

EDIT:. À mon humble avis ce qui est loin préférable à l'exécution d'un code interdit et attraper l'exception, pour des raisons de perf

Une autre approche également hacky serait d'essayer de faire quelque chose qui n'est pas autorisé dans le bac à sable et attraper l'exception résultant. Quelque chose comme ceci:

static bool? _isSandboxed;
static bool IsSandboxed() {
    if(!_isSandboxed.HasValue) {
        try {
            SPSecurity.RunWithElevatedPrivileges(delegate { });
            _isSandboxed = false;
        } catch (PolicyException) {
            _isSandboxed = true;
        }
    }
    return _isSandboxed.Value;
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top