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
- XPathItem.cs
- FileDataSource.cs
- TypeConstant.cs
- ThemeInfoAttribute.cs
- DataPagerFieldItem.cs
- OletxVolatileEnlistment.cs
- Point4D.cs
- DispatcherSynchronizationContext.cs
- XmlSiteMapProvider.cs
- QilLoop.cs
- ListControlBuilder.cs
- GroupItem.cs
- EventLogEntry.cs
- SqlPersistenceWorkflowInstanceDescription.cs
- GroupStyle.cs
- TableNameAttribute.cs
- Visitor.cs
- LeaseManager.cs
- SignedPkcs7.cs
- BinaryCommonClasses.cs
- Scheduler.cs
- TextContainerChangeEventArgs.cs
- EpmContentSerializer.cs
- BufferModeSettings.cs
- XmlSchemaSimpleTypeList.cs
- UInt32Storage.cs
- AuthenticationException.cs
- TypeLoadException.cs
- Graph.cs
- Stroke.cs
- SQLGuidStorage.cs
- BitmapCodecInfo.cs
- DataGridCellAutomationPeer.cs
- IdentitySection.cs
- CodeConstructor.cs
- GenericParameterDataContract.cs
- SettingsPropertyWrongTypeException.cs
- XmlSchemaExporter.cs
- ControlValuePropertyAttribute.cs
- IMembershipProvider.cs
- TableRow.cs
- RequestQueue.cs
- querybuilder.cs
- FocusTracker.cs
- OrthographicCamera.cs
- EraserBehavior.cs
- RecognizeCompletedEventArgs.cs
- SHA384.cs
- DataGridViewRowCollection.cs
- OletxDependentTransaction.cs
- WebPartConnectionsDisconnectVerb.cs
- GridViewRowCollection.cs
- SecurityUniqueId.cs
- TokenBasedSet.cs
- TableRow.cs
- NumericUpDown.cs
- RectAnimationUsingKeyFrames.cs
- InkCanvas.cs
- Point.cs
- StartUpEventArgs.cs
- DecimalAnimationBase.cs
- HandlerElement.cs
- CompoundFileReference.cs
- TableItemPattern.cs
- SharedConnectionWorkflowTransactionService.cs
- ActivationArguments.cs
- GeneralTransform3DTo2D.cs
- AppDomainProtocolHandler.cs
- ProcessRequestArgs.cs
- StringExpressionSet.cs
- WS2007HttpBindingElement.cs
- AppSecurityManager.cs
- ManualWorkflowSchedulerService.cs
- PreviewPrintController.cs
- DynamicRendererThreadManager.cs
- Timer.cs
- DirectoryObjectSecurity.cs
- MouseWheelEventArgs.cs
- TransformValueSerializer.cs
- linebase.cs
- DecoderBestFitFallback.cs
- WebReferencesBuildProvider.cs
- ScrollEvent.cs
- Rule.cs
- HttpProfileBase.cs
- CaseKeyBox.ViewModel.cs
- TemplatePartAttribute.cs
- CursorConverter.cs
- XamlSerializerUtil.cs
- DPCustomTypeDescriptor.cs
- DynamicHyperLink.cs
- SmtpDateTime.cs
- OleDbWrapper.cs
- StringUtil.cs
- MetaModel.cs
- ModelPerspective.cs
- ColorContext.cs
- SettingsBase.cs
- IIS7UserPrincipal.cs
- BaseAutoFormat.cs