Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WCF / System.ServiceModel.Activation / System / ServiceModel / Activation / HostingMessageProperty.cs / 1305376 / HostingMessageProperty.cs
//---------------------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //--------------------------------------------------------------------------- namespace System.ServiceModel.Activation { using System.Runtime; using System.Security; using System.ServiceModel; sealed class HostingMessageProperty : IAspNetMessageProperty { const string name = "webhost"; [Fx.Tag.SecurityNote(Critical = "Keeps track of impersonated user, caller must use with care and call Dispose at the appropriate time.")] [SecurityCritical] HostedImpersonationContext impersonationContext; [Fx.Tag.SecurityNote(Critical = "Stores a SecurityCritical helper class that controls HttpContext.Current with an elevation." + "Need to ensure that HostedThreadData is constructed and used properly.")] [SecurityCritical] HostedThreadData currentThreadData; [Fx.Tag.SecurityNote(Critical = "Sets impersonation context from an arbitrary source, caller must guard.")] [SecurityCritical] internal HostingMessageProperty(HostedHttpRequestAsyncResult result) { Fx.Assert(ServiceHostingEnvironment.IsHosted, "should only be called in the hosted path"); if (ServiceHostingEnvironment.AspNetCompatibilityEnabled) { if (result.ImpersonationContext != null && result.ImpersonationContext.IsImpersonated) { this.impersonationContext = result.ImpersonationContext; this.impersonationContext.AddRef(); } currentThreadData = result.HostedThreadData; } this.OriginalRequestUri = result.OriginalRequestUri; } public Uri OriginalRequestUri { get; private set; } static internal string Name { get { return name; } } HostedImpersonationContext ImpersonationContext { [Fx.Tag.SecurityNote(Critical = "Keeps track of impersonated user, caller must use with care.", Safe = "Safe for Get, individual members of HostedImpersonationContext are protected.")] [SecuritySafeCritical] get { return impersonationContext; } } [Fx.Tag.SecurityNote(Critical = "Delegates to a SecurityCritical method in HostedThreadData." + "Caller must ensure that function is called appropriately and result is guarded and Dispose()'d correctly.")] [SecurityCritical] public IDisposable ApplyIntegrationContext() { if (ServiceHostingEnvironment.AspNetCompatibilityEnabled) { return currentThreadData.CreateContext(); } return null; } [Fx.Tag.SecurityNote(Critical = "Accesses SecurityCritical method HostedImpersonationContext.Impersonate." + "Caller should use with care, must take responsibility for reverting impersonation.")] [SecurityCritical] public IDisposable Impersonate() { if (this.ImpersonationContext != null) { return this.ImpersonationContext.Impersonate(); } else { return null; } } [Fx.Tag.SecurityNote(Critical = "Cleans up impersonationContext, which is critical.", Safe = "Doesn't leak anything.")] [SecuritySafeCritical] public void Close() { if (impersonationContext != null) { impersonationContext.Release(); impersonationContext = null; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //---------------------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //--------------------------------------------------------------------------- namespace System.ServiceModel.Activation { using System.Runtime; using System.Security; using System.ServiceModel; sealed class HostingMessageProperty : IAspNetMessageProperty { const string name = "webhost"; [Fx.Tag.SecurityNote(Critical = "Keeps track of impersonated user, caller must use with care and call Dispose at the appropriate time.")] [SecurityCritical] HostedImpersonationContext impersonationContext; [Fx.Tag.SecurityNote(Critical = "Stores a SecurityCritical helper class that controls HttpContext.Current with an elevation." + "Need to ensure that HostedThreadData is constructed and used properly.")] [SecurityCritical] HostedThreadData currentThreadData; [Fx.Tag.SecurityNote(Critical = "Sets impersonation context from an arbitrary source, caller must guard.")] [SecurityCritical] internal HostingMessageProperty(HostedHttpRequestAsyncResult result) { Fx.Assert(ServiceHostingEnvironment.IsHosted, "should only be called in the hosted path"); if (ServiceHostingEnvironment.AspNetCompatibilityEnabled) { if (result.ImpersonationContext != null && result.ImpersonationContext.IsImpersonated) { this.impersonationContext = result.ImpersonationContext; this.impersonationContext.AddRef(); } currentThreadData = result.HostedThreadData; } this.OriginalRequestUri = result.OriginalRequestUri; } public Uri OriginalRequestUri { get; private set; } static internal string Name { get { return name; } } HostedImpersonationContext ImpersonationContext { [Fx.Tag.SecurityNote(Critical = "Keeps track of impersonated user, caller must use with care.", Safe = "Safe for Get, individual members of HostedImpersonationContext are protected.")] [SecuritySafeCritical] get { return impersonationContext; } } [Fx.Tag.SecurityNote(Critical = "Delegates to a SecurityCritical method in HostedThreadData." + "Caller must ensure that function is called appropriately and result is guarded and Dispose()'d correctly.")] [SecurityCritical] public IDisposable ApplyIntegrationContext() { if (ServiceHostingEnvironment.AspNetCompatibilityEnabled) { return currentThreadData.CreateContext(); } return null; } [Fx.Tag.SecurityNote(Critical = "Accesses SecurityCritical method HostedImpersonationContext.Impersonate." + "Caller should use with care, must take responsibility for reverting impersonation.")] [SecurityCritical] public IDisposable Impersonate() { if (this.ImpersonationContext != null) { return this.ImpersonationContext.Impersonate(); } else { return null; } } [Fx.Tag.SecurityNote(Critical = "Cleans up impersonationContext, which is critical.", Safe = "Doesn't leak anything.")] [SecuritySafeCritical] public void Close() { if (impersonationContext != null) { impersonationContext.Release(); impersonationContext = null; } } } } // 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
- TextElementCollection.cs
- XmlNodeReader.cs
- sqlcontext.cs
- PropertyChangedEventArgs.cs
- RoutingTable.cs
- base64Transforms.cs
- BehaviorEditorPart.cs
- BindingsCollection.cs
- RadialGradientBrush.cs
- ToolboxItemImageConverter.cs
- SQLUtility.cs
- ObjectQuery.cs
- WebConfigurationHost.cs
- FileStream.cs
- ColumnHeader.cs
- X509CertificateStore.cs
- ZipIOCentralDirectoryFileHeader.cs
- _IPv4Address.cs
- MonthCalendar.cs
- ChangeConflicts.cs
- DebugController.cs
- XmlAttributeProperties.cs
- ParameterCollection.cs
- XmlSchemaSimpleTypeRestriction.cs
- ValueConversionAttribute.cs
- OciEnlistContext.cs
- IndependentlyAnimatedPropertyMetadata.cs
- FileAccessException.cs
- Parser.cs
- ByteRangeDownloader.cs
- SelectedGridItemChangedEvent.cs
- xamlnodes.cs
- FormsAuthentication.cs
- IResourceProvider.cs
- MetadataUtilsSmi.cs
- HTTPNotFoundHandler.cs
- SelectedCellsChangedEventArgs.cs
- DbQueryCommandTree.cs
- HwndSourceParameters.cs
- CodeDomSerializationProvider.cs
- DataList.cs
- ADMembershipProvider.cs
- UnsafeNativeMethods.cs
- WinFormsComponentEditor.cs
- UserMapPath.cs
- XPathSelectionIterator.cs
- XamlPathDataSerializer.cs
- WebPartConnection.cs
- UpdateCompiler.cs
- ProcessProtocolHandler.cs
- OdbcDataAdapter.cs
- GenericEnumConverter.cs
- SystemParameters.cs
- BuildManagerHost.cs
- ClientScriptItemCollection.cs
- BorderGapMaskConverter.cs
- WCFBuildProvider.cs
- ContentTextAutomationPeer.cs
- OpCopier.cs
- XPathBuilder.cs
- MaskedTextBoxTextEditor.cs
- IDReferencePropertyAttribute.cs
- ProfileSettings.cs
- InternalConfigHost.cs
- ToolStripItemEventArgs.cs
- HostVisual.cs
- ButtonColumn.cs
- ToolStripDropTargetManager.cs
- RelatedImageListAttribute.cs
- NameValueSectionHandler.cs
- MD5.cs
- InheritanceContextChangedEventManager.cs
- _UriTypeConverter.cs
- ApplicationCommands.cs
- FilteredAttributeCollection.cs
- Stack.cs
- VBIdentifierDesigner.xaml.cs
- ISAPIWorkerRequest.cs
- SQLDecimal.cs
- RijndaelManaged.cs
- ActivityBuilderHelper.cs
- ButtonColumn.cs
- ITextView.cs
- FederatedMessageSecurityOverHttp.cs
- PolicyManager.cs
- GridProviderWrapper.cs
- ModuleBuilderData.cs
- FixedSOMTable.cs
- CallSiteHelpers.cs
- RegexMatch.cs
- xdrvalidator.cs
- ItemType.cs
- Int64Animation.cs
- ISCIIEncoding.cs
- ExpressionBinding.cs
- ClaimTypes.cs
- ChangeNode.cs
- QueryStringParameter.cs
- TableAdapterManagerHelper.cs
- Point3DValueSerializer.cs