Frage

Ist es möglich zu überprüfen, ob es in der Lösung als Sandbox eingesetzt wurde oder nicht, z. B. so ähnlich:

if(this.IamSandboxedSolution)
    // do something
else
    // do something else
War es hilfreich?

Lösung

Nicht aus dem Box Afaik.

Sie könnten es so überprüfen:

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

Andere Tipps

Afaik Es gibt leider keinen narrensicheren Weg, dies zu tun. Ich weiß, dass das SharePoint Muster & Practices -Team von Microsoft Folgendes verwendet:

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

Wenn das das Beste ist, das sie sich ausgedacht haben, ist es fair zu sagen, dass das so gut ist wie es nur geht. Offensichtlich ist eine statische Helfermethode der richtige Weg, anstatt diesen Scheck über Ihren Code übersät.

Bearbeiten: IMHO Dies ist weitaus vorzuziehen, um einen verbotenen Code auszuführen und die Ausnahme aus den ersten Gründen zu fangen.

Ein weiterer gleichermaßen hackiger Ansatz wäre es, etwas zu tun, das in der Sandbox nicht erlaubt ist und die resultierende Ausnahme fangen kann. Etwas wie das:

static bool? _isSandboxed;
static bool IsSandboxed() {
    if(!_isSandboxed.HasValue) {
        try {
            SPSecurity.RunWithElevatedPrivileges(delegate { });
            _isSandboxed = false;
        } catch (PolicyException) {
            _isSandboxed = true;
        }
    }
    return _isSandboxed.Value;
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit sharepoint.stackexchange
scroll top