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
- ErrorStyle.cs
- PathGeometry.cs
- CompositeActivityTypeDescriptorProvider.cs
- ProfessionalColorTable.cs
- ComponentChangedEvent.cs
- XmlParserContext.cs
- BlurBitmapEffect.cs
- FontFamilyConverter.cs
- InstanceHandleReference.cs
- HtmlTextArea.cs
- RoutedEventArgs.cs
- XNodeValidator.cs
- SoapProtocolImporter.cs
- CodeCatchClause.cs
- SerialPort.cs
- KeyedQueue.cs
- ReflectionUtil.cs
- InOutArgument.cs
- StringStorage.cs
- Wildcard.cs
- WrappedIUnknown.cs
- Tokenizer.cs
- DataBinder.cs
- SqlClientWrapperSmiStreamChars.cs
- HtmlInputSubmit.cs
- EntityContainerRelationshipSetEnd.cs
- TrackingMemoryStream.cs
- SqlFunctionAttribute.cs
- X509SecurityTokenAuthenticator.cs
- ObjectSecurity.cs
- ChildDocumentBlock.cs
- InsufficientMemoryException.cs
- TextServicesContext.cs
- _NestedMultipleAsyncResult.cs
- WebPartDisplayMode.cs
- ObjectItemConventionAssemblyLoader.cs
- SecureUICommand.cs
- RetrieveVirtualItemEventArgs.cs
- COM2Properties.cs
- IImplicitResourceProvider.cs
- _LazyAsyncResult.cs
- QilInvokeEarlyBound.cs
- ListViewHitTestInfo.cs
- RelatedImageListAttribute.cs
- PartialArray.cs
- DynamicValidatorEventArgs.cs
- CodeAssignStatement.cs
- SafeRightsManagementHandle.cs
- PasswordRecovery.cs
- WsatExtendedInformation.cs
- BookmarkTable.cs
- ClientFormsAuthenticationCredentials.cs
- ListChangedEventArgs.cs
- ValuePatternIdentifiers.cs
- BasicKeyConstraint.cs
- RequestResponse.cs
- AuthenticatingEventArgs.cs
- _NegoStream.cs
- Typography.cs
- TextContainerChangeEventArgs.cs
- NCryptNative.cs
- DataPagerCommandEventArgs.cs
- BitVector32.cs
- SafeBitVector32.cs
- URLMembershipCondition.cs
- unsafeIndexingFilterStream.cs
- VirtualPathProvider.cs
- PageVisual.cs
- UnitControl.cs
- XmlDataSourceNodeDescriptor.cs
- XmlTextAttribute.cs
- SpeechRecognizer.cs
- DynamicILGenerator.cs
- DataSourceHelper.cs
- ArraySegment.cs
- SqlNodeAnnotations.cs
- DirectoryInfo.cs
- ExceptionUtil.cs
- PreviewKeyDownEventArgs.cs
- RelatedPropertyManager.cs
- IdentifierService.cs
- BindingManagerDataErrorEventArgs.cs
- SystemColors.cs
- FilterEventArgs.cs
- TextLineResult.cs
- ValidationHelpers.cs
- DocumentOrderComparer.cs
- mediapermission.cs
- querybuilder.cs
- ExpressionEditorAttribute.cs
- loginstatus.cs
- RuntimeHelpers.cs
- PageAsyncTaskManager.cs
- filewebrequest.cs
- RIPEMD160.cs
- SafeThreadHandle.cs
- SqlProviderServices.cs
- GenericTextProperties.cs
- ProviderCommandInfoUtils.cs
- XPathConvert.cs