Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WCF / System.ServiceModel.Activation / System / ServiceModel / Activation / HostingEnvironmentWrapper.cs / 1305376 / HostingEnvironmentWrapper.cs
//---------------------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //--------------------------------------------------------------------------- namespace System.ServiceModel { using System; using System.Runtime; using System.Runtime.CompilerServices; using System.Security; using System.Security.Permissions; using System.Web; using System.Web.Hosting; // wrapper class that helps with partial trust analysis // -- HostingEnvironment does a number of Demands and LinkDemands // -- this wrapper encapsulates access into "Safe" and "Unsafe" methods that do the appropriate asserts // -- it is recommended that ALL HostingEnvironment access go through this class // -- "Safe" methods are [SecurityCritical, SecurityTreatAsSafe] or not [SecurityCritical] // -- "Unsafe" methods are [SecurityCritical] // -- because each method does precisely one access, we use declarative asserts for clarity static class HostingEnvironmentWrapper { public static string ApplicationVirtualPath { get { return HostingEnvironment.ApplicationVirtualPath; } } public static bool IsHosted { get { return HostingEnvironment.IsHosted; } } [Fx.Tag.SecurityNote(Critical = "Calls getters with LinkDemands in ASP .NET objects.", Safe = "Does not leak control or mutable/harmful data, no potential for harm.")] public static VirtualPathProvider VirtualPathProvider { [SecuritySafeCritical] get { return HostingEnvironment.VirtualPathProvider; } } [Fx.Tag.SecurityNote(Critical = "Calls getters with LinkDemands in ASP .NET objects.", Safe = "Does not leak control or mutable/harmful data, no potential for harm.")] [SecuritySafeCritical] [MethodImpl(MethodImplOptions.NoInlining)] public static void DecrementBusyCount() { HostingEnvironment.DecrementBusyCount(); } // demands SecurityPermission(ControlPrincipal) -- use Unsafe version to assert public static IDisposable Impersonate() { return HostingEnvironment.Impersonate(); } // demands SecurityPermission(Unrestricted) -- use Unsafe version to assert public static IDisposable Impersonate(IntPtr token) { return HostingEnvironment.Impersonate(token); } [Fx.Tag.SecurityNote(Critical = "Calls getters with LinkDemands in ASP .NET objects.", Safe = "Does not leak control or mutable/harmful data, no potential for harm.")] [SecuritySafeCritical] [MethodImpl(MethodImplOptions.NoInlining)] public static void IncrementBusyCount() { HostingEnvironment.IncrementBusyCount(); } public static string MapPath(string virtualPath) { return HostingEnvironment.MapPath(virtualPath); } public static string UnsafeApplicationID { [Fx.Tag.SecurityNote(Critical = "Asserts SecurityPermission in order to call HostingEnvironment.get_ApplicationID.")] [SecurityCritical] [AspNetHostingPermission(System.Security.Permissions.SecurityAction.Assert, Level = AspNetHostingPermissionLevel.High)] get { return HostingEnvironment.ApplicationID; } } [Fx.Tag.SecurityNote(Critical = "Asserts SecurityPermission in order to call HostingEnvironment.UnsafeImpersonate.")] [SecurityCritical] [SecurityPermission(SecurityAction.Assert, ControlPrincipal = true)] public static IDisposable UnsafeImpersonate() { return HostingEnvironment.Impersonate(); } [Fx.Tag.SecurityNote(Critical = "Asserts SecurityPermission in order to call HostingEnvironment.UnsafeImpersonate.")] [SecurityCritical] [SecurityPermission(SecurityAction.Assert, Unrestricted = true)] public static IDisposable UnsafeImpersonate(IntPtr token) { return HostingEnvironment.Impersonate(token); } [Fx.Tag.SecurityNote(Critical = "Asserts SecurityPermission in order to call HostingEnvironment.RegisterObject.")] [SecurityCritical] [SecurityPermission(SecurityAction.Assert, Unrestricted = true)] public static void UnsafeRegisterObject(IRegisteredObject target) { HostingEnvironment.RegisterObject(target); } [Fx.Tag.SecurityNote(Critical = "Asserts SecurityPermission in order to call HostingEnvironment.UnregisterObject.")] [SecurityCritical] [SecurityPermission(SecurityAction.Assert, Unrestricted = true)] public static void UnsafeUnregisterObject(IRegisteredObject target) { HostingEnvironment.UnregisterObject(target); } [Fx.Tag.SecurityNote(Critical = "Uses SecurityCritical method UnsafeImpersonate in order to check whether the service file exists.", Safe = "Does not leak anything, does not let caller influence impersonation.")] [SecuritySafeCritical] public static bool ServiceFileExists(string normalizedVirtualPath) { IDisposable unsafeImpersonate = null; try { try { try { } finally { unsafeImpersonate = HostingEnvironmentWrapper.UnsafeImpersonate(); } return HostingEnvironment.VirtualPathProvider.FileExists(normalizedVirtualPath); } finally { if (null != unsafeImpersonate) { unsafeImpersonate.Dispose(); } } } catch { throw; } } [Fx.Tag.SecurityNote(Critical = "Uses SecurityCritical method UnsafeImpersonate in order to get service file.", Safe = "Does not leak anything, does not let caller influence impersonation.")] [SecuritySafeCritical] public static VirtualFile GetServiceFile(string normalizedVirtualPath) { IDisposable unsafeImpersonate = null; try { try { try { } finally { unsafeImpersonate = HostingEnvironmentWrapper.UnsafeImpersonate(); } return HostingEnvironment.VirtualPathProvider.GetFile(normalizedVirtualPath); } finally { if (null != unsafeImpersonate) { unsafeImpersonate.Dispose(); } } } catch { throw; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //---------------------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //--------------------------------------------------------------------------- namespace System.ServiceModel { using System; using System.Runtime; using System.Runtime.CompilerServices; using System.Security; using System.Security.Permissions; using System.Web; using System.Web.Hosting; // wrapper class that helps with partial trust analysis // -- HostingEnvironment does a number of Demands and LinkDemands // -- this wrapper encapsulates access into "Safe" and "Unsafe" methods that do the appropriate asserts // -- it is recommended that ALL HostingEnvironment access go through this class // -- "Safe" methods are [SecurityCritical, SecurityTreatAsSafe] or not [SecurityCritical] // -- "Unsafe" methods are [SecurityCritical] // -- because each method does precisely one access, we use declarative asserts for clarity static class HostingEnvironmentWrapper { public static string ApplicationVirtualPath { get { return HostingEnvironment.ApplicationVirtualPath; } } public static bool IsHosted { get { return HostingEnvironment.IsHosted; } } [Fx.Tag.SecurityNote(Critical = "Calls getters with LinkDemands in ASP .NET objects.", Safe = "Does not leak control or mutable/harmful data, no potential for harm.")] public static VirtualPathProvider VirtualPathProvider { [SecuritySafeCritical] get { return HostingEnvironment.VirtualPathProvider; } } [Fx.Tag.SecurityNote(Critical = "Calls getters with LinkDemands in ASP .NET objects.", Safe = "Does not leak control or mutable/harmful data, no potential for harm.")] [SecuritySafeCritical] [MethodImpl(MethodImplOptions.NoInlining)] public static void DecrementBusyCount() { HostingEnvironment.DecrementBusyCount(); } // demands SecurityPermission(ControlPrincipal) -- use Unsafe version to assert public static IDisposable Impersonate() { return HostingEnvironment.Impersonate(); } // demands SecurityPermission(Unrestricted) -- use Unsafe version to assert public static IDisposable Impersonate(IntPtr token) { return HostingEnvironment.Impersonate(token); } [Fx.Tag.SecurityNote(Critical = "Calls getters with LinkDemands in ASP .NET objects.", Safe = "Does not leak control or mutable/harmful data, no potential for harm.")] [SecuritySafeCritical] [MethodImpl(MethodImplOptions.NoInlining)] public static void IncrementBusyCount() { HostingEnvironment.IncrementBusyCount(); } public static string MapPath(string virtualPath) { return HostingEnvironment.MapPath(virtualPath); } public static string UnsafeApplicationID { [Fx.Tag.SecurityNote(Critical = "Asserts SecurityPermission in order to call HostingEnvironment.get_ApplicationID.")] [SecurityCritical] [AspNetHostingPermission(System.Security.Permissions.SecurityAction.Assert, Level = AspNetHostingPermissionLevel.High)] get { return HostingEnvironment.ApplicationID; } } [Fx.Tag.SecurityNote(Critical = "Asserts SecurityPermission in order to call HostingEnvironment.UnsafeImpersonate.")] [SecurityCritical] [SecurityPermission(SecurityAction.Assert, ControlPrincipal = true)] public static IDisposable UnsafeImpersonate() { return HostingEnvironment.Impersonate(); } [Fx.Tag.SecurityNote(Critical = "Asserts SecurityPermission in order to call HostingEnvironment.UnsafeImpersonate.")] [SecurityCritical] [SecurityPermission(SecurityAction.Assert, Unrestricted = true)] public static IDisposable UnsafeImpersonate(IntPtr token) { return HostingEnvironment.Impersonate(token); } [Fx.Tag.SecurityNote(Critical = "Asserts SecurityPermission in order to call HostingEnvironment.RegisterObject.")] [SecurityCritical] [SecurityPermission(SecurityAction.Assert, Unrestricted = true)] public static void UnsafeRegisterObject(IRegisteredObject target) { HostingEnvironment.RegisterObject(target); } [Fx.Tag.SecurityNote(Critical = "Asserts SecurityPermission in order to call HostingEnvironment.UnregisterObject.")] [SecurityCritical] [SecurityPermission(SecurityAction.Assert, Unrestricted = true)] public static void UnsafeUnregisterObject(IRegisteredObject target) { HostingEnvironment.UnregisterObject(target); } [Fx.Tag.SecurityNote(Critical = "Uses SecurityCritical method UnsafeImpersonate in order to check whether the service file exists.", Safe = "Does not leak anything, does not let caller influence impersonation.")] [SecuritySafeCritical] public static bool ServiceFileExists(string normalizedVirtualPath) { IDisposable unsafeImpersonate = null; try { try { try { } finally { unsafeImpersonate = HostingEnvironmentWrapper.UnsafeImpersonate(); } return HostingEnvironment.VirtualPathProvider.FileExists(normalizedVirtualPath); } finally { if (null != unsafeImpersonate) { unsafeImpersonate.Dispose(); } } } catch { throw; } } [Fx.Tag.SecurityNote(Critical = "Uses SecurityCritical method UnsafeImpersonate in order to get service file.", Safe = "Does not leak anything, does not let caller influence impersonation.")] [SecuritySafeCritical] public static VirtualFile GetServiceFile(string normalizedVirtualPath) { IDisposable unsafeImpersonate = null; try { try { try { } finally { unsafeImpersonate = HostingEnvironmentWrapper.UnsafeImpersonate(); } return HostingEnvironment.VirtualPathProvider.GetFile(normalizedVirtualPath); } finally { if (null != unsafeImpersonate) { unsafeImpersonate.Dispose(); } } } catch { throw; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ClientCultureInfo.cs
- TimeoutStream.cs
- PointCollection.cs
- FileLevelControlBuilderAttribute.cs
- ErrorStyle.cs
- DateTimeFormatInfo.cs
- StateMachineAction.cs
- Deflater.cs
- MulticastNotSupportedException.cs
- ListBox.cs
- RelationalExpressions.cs
- XmlWriterTraceListener.cs
- DataReaderContainer.cs
- ZipIOExtraFieldPaddingElement.cs
- ByeOperation11AsyncResult.cs
- ComAdminInterfaces.cs
- AdornedElementPlaceholder.cs
- TemplateComponentConnector.cs
- TransformedBitmap.cs
- XmlAttributeAttribute.cs
- SID.cs
- ExpressionBuilder.cs
- KoreanCalendar.cs
- VectorAnimationBase.cs
- InternalConfigRoot.cs
- DiscoveryServerProtocol.cs
- TraceLog.cs
- TextMetrics.cs
- CodeLinePragma.cs
- AppDomainFactory.cs
- XPathNodeHelper.cs
- Stacktrace.cs
- MenuItemCollection.cs
- WebSysDisplayNameAttribute.cs
- TableItemStyle.cs
- AdornerDecorator.cs
- SqlDependencyUtils.cs
- HttpModulesSection.cs
- StorageTypeMapping.cs
- BitmapImage.cs
- StatusBarItemAutomationPeer.cs
- MultipleViewProviderWrapper.cs
- XmlUrlResolver.cs
- Expressions.cs
- ObjectDataSourceSelectingEventArgs.cs
- ConfigXmlText.cs
- ObjectDataSourceMethodEventArgs.cs
- FontUnitConverter.cs
- RecordBuilder.cs
- RankException.cs
- ImageListStreamer.cs
- FixedTextPointer.cs
- CharacterMetricsDictionary.cs
- ItemContainerProviderWrapper.cs
- DetailsViewRow.cs
- MD5CryptoServiceProvider.cs
- WhiteSpaceTrimStringConverter.cs
- SecurityUniqueId.cs
- AspNetHostingPermission.cs
- ImportedNamespaceContextItem.cs
- CryptoApi.cs
- EdmRelationshipRoleAttribute.cs
- StandardBindingReliableSessionElement.cs
- Typography.cs
- StopRoutingHandler.cs
- DefaultValueAttribute.cs
- httpapplicationstate.cs
- DbConnectionPoolCounters.cs
- ClassicBorderDecorator.cs
- InputLangChangeRequestEvent.cs
- WindowsEditBox.cs
- NativeMethods.cs
- MethodAccessException.cs
- Evidence.cs
- VerticalConnector.xaml.cs
- CustomError.cs
- CrossContextChannel.cs
- OdbcEnvironmentHandle.cs
- AsymmetricKeyExchangeFormatter.cs
- Authorization.cs
- XpsSerializationException.cs
- FixedTextPointer.cs
- SecurityTokenContainer.cs
- StrongNameMembershipCondition.cs
- DataGridViewAutoSizeColumnModeEventArgs.cs
- X500Name.cs
- ControlHelper.cs
- Section.cs
- ComponentDispatcherThread.cs
- PropertyInfoSet.cs
- ExtenderHelpers.cs
- DataTable.cs
- Vector3DCollectionConverter.cs
- BaseDataListActionList.cs
- TextBoxBase.cs
- AttributeXamlType.cs
- TreePrinter.cs
- ConnectionsZoneAutoFormat.cs
- NetworkStream.cs
- IndexOutOfRangeException.cs