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
- ConnectionInterfaceCollection.cs
- HtmlImage.cs
- BinaryWriter.cs
- ProfessionalColorTable.cs
- SqlUserDefinedTypeAttribute.cs
- SiteMapHierarchicalDataSourceView.cs
- ContextStack.cs
- SourceFileBuildProvider.cs
- ParagraphVisual.cs
- KnowledgeBase.cs
- SystemIPGlobalProperties.cs
- AvtEvent.cs
- MonikerBuilder.cs
- FixedNode.cs
- DrawingDrawingContext.cs
- ClusterRegistryConfigurationProvider.cs
- InputLangChangeEvent.cs
- CleanUpVirtualizedItemEventArgs.cs
- DictionaryBase.cs
- EntityDataSourceColumn.cs
- HiddenFieldPageStatePersister.cs
- SafePEFileHandle.cs
- DBConnection.cs
- EntryWrittenEventArgs.cs
- TextEditorSpelling.cs
- HttpApplicationFactory.cs
- _RequestLifetimeSetter.cs
- InputEventArgs.cs
- Int16.cs
- StandardToolWindows.cs
- ItemMap.cs
- JavaScriptObjectDeserializer.cs
- SmiMetaDataProperty.cs
- CompilationLock.cs
- ControlPropertyNameConverter.cs
- DetectRunnableInstancesTask.cs
- SQLBinary.cs
- WindowHideOrCloseTracker.cs
- XPathBinder.cs
- LongSumAggregationOperator.cs
- Property.cs
- ConstructorExpr.cs
- MenuRendererStandards.cs
- PersonalizableAttribute.cs
- DesigntimeLicenseContextSerializer.cs
- ValueProviderWrapper.cs
- XmlElementList.cs
- SmtpException.cs
- xmlformatgeneratorstatics.cs
- OdbcCommand.cs
- ServiceBuildProvider.cs
- WebFormsRootDesigner.cs
- PathGeometry.cs
- DNS.cs
- SpeechSynthesizer.cs
- ComponentResourceManager.cs
- Wildcard.cs
- DockAndAnchorLayout.cs
- NumericUpDown.cs
- XPathNodeList.cs
- ErrorRuntimeConfig.cs
- UrlPath.cs
- Console.cs
- BitmapEncoder.cs
- ContractAdapter.cs
- oledbconnectionstring.cs
- CompilationSection.cs
- BookmarkOptionsHelper.cs
- UnsafeNativeMethods.cs
- WrapperEqualityComparer.cs
- odbcmetadatacolumnnames.cs
- DataGridTableStyleMappingNameEditor.cs
- PasswordTextContainer.cs
- GridItemCollection.cs
- TimeSpanConverter.cs
- XmlSchemaExternal.cs
- FontCacheUtil.cs
- OleDbReferenceCollection.cs
- ComPlusTypeValidator.cs
- MarshalByValueComponent.cs
- Header.cs
- InternalConfigHost.cs
- MarkerProperties.cs
- StateInitialization.cs
- RedirectionProxy.cs
- ColumnWidthChangedEvent.cs
- NetNamedPipeSecurityMode.cs
- PageCatalogPart.cs
- ViewManager.cs
- PointValueSerializer.cs
- SchemaMapping.cs
- PackWebResponse.cs
- NameValueConfigurationCollection.cs
- Stacktrace.cs
- DictationGrammar.cs
- FieldAccessException.cs
- ReceiveCompletedEventArgs.cs
- CryptoApi.cs
- EmulateRecognizeCompletedEventArgs.cs
- SocketInformation.cs