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
- SqlDependencyListener.cs
- BamlVersionHeader.cs
- DataServiceResponse.cs
- PtsHost.cs
- Sequence.cs
- GPRECT.cs
- CaseInsensitiveOrdinalStringComparer.cs
- XmlObjectSerializer.cs
- DefaultPropertyAttribute.cs
- ConversionContext.cs
- ResolveDuplex11AsyncResult.cs
- TextStore.cs
- Substitution.cs
- PriorityQueue.cs
- BitStack.cs
- Repeater.cs
- BasicBrowserDialog.cs
- ArcSegment.cs
- PropertyValueChangedEvent.cs
- ProfileSettingsCollection.cs
- Storyboard.cs
- StartUpEventArgs.cs
- DataChangedEventManager.cs
- DocumentReference.cs
- DataComponentGenerator.cs
- DbConnectionStringCommon.cs
- XamlPointCollectionSerializer.cs
- SortedList.cs
- InternalControlCollection.cs
- TemplatedEditableDesignerRegion.cs
- UnsafeCollabNativeMethods.cs
- RolePrincipal.cs
- AffineTransform3D.cs
- ProtectedUri.cs
- Ports.cs
- BamlWriter.cs
- CustomAttribute.cs
- ScriptDescriptor.cs
- CalculatedColumn.cs
- EditBehavior.cs
- StorageEndPropertyMapping.cs
- PackageRelationshipSelector.cs
- RuleSetDialog.Designer.cs
- login.cs
- LabelLiteral.cs
- CodeDirectionExpression.cs
- StringPropertyBuilder.cs
- SQLRoleProvider.cs
- GridViewColumnHeader.cs
- SizeLimitedCache.cs
- MetaModel.cs
- RSAPKCS1KeyExchangeFormatter.cs
- DropShadowEffect.cs
- Trace.cs
- TogglePatternIdentifiers.cs
- ExpressionParser.cs
- StreamInfo.cs
- UnmanagedBitmapWrapper.cs
- XPathItem.cs
- EdmTypeAttribute.cs
- RecognizedAudio.cs
- ObjectAnimationBase.cs
- DesignerOptionService.cs
- ByteRangeDownloader.cs
- HttpContext.cs
- Int16AnimationUsingKeyFrames.cs
- HttpCookieCollection.cs
- Native.cs
- PhysicalFontFamily.cs
- StringInfo.cs
- SQLBinaryStorage.cs
- DbConnectionInternal.cs
- PipelineModuleStepContainer.cs
- MetaModel.cs
- GeneralTransform2DTo3D.cs
- FreeFormPanel.cs
- CompositeDataBoundControl.cs
- ToolboxItemImageConverter.cs
- PngBitmapDecoder.cs
- HTMLTextWriter.cs
- XsltContext.cs
- SweepDirectionValidation.cs
- EventEntry.cs
- LogStore.cs
- MarkupProperty.cs
- Baml6Assembly.cs
- SecurityPermission.cs
- VarRefManager.cs
- ListManagerBindingsCollection.cs
- WebSysDefaultValueAttribute.cs
- DataTransferEventArgs.cs
- Keyboard.cs
- StructuralType.cs
- CodeAssignStatement.cs
- ContainerControlDesigner.cs
- TemplateInstanceAttribute.cs
- FieldMetadata.cs
- PublisherIdentityPermission.cs
- StateChangeEvent.cs
- UserInitiatedNavigationPermission.cs