//------------------------------------------------------------------------------ // // Copyright (c) Microsoft Corporation. All rights reserved. // //------------------------------------------------------------------------------ namespace System.Web.Services { using System.Security; using System.Web.Hosting; internal static class PartialTrustHelpers { [SecurityCritical] private static bool isInPartialTrustOutsideAspNet; // indicates if we are running in partial trust outside the ASP.NET context [SecurityCritical] private static bool isInPartialTrustOutsideAspNetInitialized = false; /// /// Used to guard usage of System.Web types in partial trust outside the ASP.NET context (because they are not secure), /// in which case we shutdown the process. /// [SecuritySafeCritical] // Critical because it uses security critical fields. Safe because it doesn't take user input and it doesn't leak security sensitive information. internal static void FailIfInPartialTrustOutsideAspNet() { if (!isInPartialTrustOutsideAspNetInitialized) { // The HostingEnvironment.IsHosted property is safe to be called in partial trust outside the ASP.NET context. isInPartialTrustOutsideAspNet = !(AppDomain.CurrentDomain.IsFullyTrusted || HostingEnvironment.IsHosted); isInPartialTrustOutsideAspNetInitialized = true; } if (isInPartialTrustOutsideAspNet) { throw new SecurityException(Res.GetString(Res.CannotRunInPartialTrustOutsideAspNet)); } } } }