Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- NetworkInformationException.cs
- ToolStripTextBox.cs
- KnownBoxes.cs
- FileNotFoundException.cs
- Stylesheet.cs
- ButtonChrome.cs
- XPathScanner.cs
- TextBox.cs
- ExternalCalls.cs
- activationcontext.cs
- RadioButton.cs
- PageParser.cs
- AbandonedMutexException.cs
- Span.cs
- EffectiveValueEntry.cs
- XPathNavigatorKeyComparer.cs
- ResourceBinder.cs
- NativeObjectSecurity.cs
- CommandBinding.cs
- sqlstateclientmanager.cs
- KeyboardDevice.cs
- ExclusiveTcpListener.cs
- DeclarativeCatalogPart.cs
- HttpListenerResponse.cs
- Rect.cs
- StyleSheetRefUrlEditor.cs
- MsdtcClusterUtils.cs
- MsmqIntegrationBinding.cs
- X509CertificateCollection.cs
- HtmlControlPersistable.cs
- SemaphoreSlim.cs
- MinMaxParagraphWidth.cs
- GiveFeedbackEvent.cs
- XmlSerializerNamespaces.cs
- Decorator.cs
- SourceElementsCollection.cs
- MimeBasePart.cs
- TaskForm.cs
- ColorConverter.cs
- DefaultBindingPropertyAttribute.cs
- PassportAuthentication.cs
- PageContentAsyncResult.cs
- SystemColorTracker.cs
- ThicknessAnimationUsingKeyFrames.cs
- _ConnectStream.cs
- Tag.cs
- ScrollableControl.cs
- Line.cs
- ResourceProviderFactory.cs
- AffineTransform3D.cs
- ObjectViewEntityCollectionData.cs
- Roles.cs
- Quaternion.cs
- RoutingChannelExtension.cs
- SplitterEvent.cs
- BitmapVisualManager.cs
- XmlDocument.cs
- DependencyStoreSurrogate.cs
- CfgParser.cs
- RuntimeArgumentHandle.cs
- LayoutEditorPart.cs
- DbMetaDataFactory.cs
- RichTextBoxConstants.cs
- ContainerControl.cs
- MouseWheelEventArgs.cs
- ObjectSet.cs
- ContractDescription.cs
- MultiAsyncResult.cs
- SocketPermission.cs
- RuntimeHelpers.cs
- UniqueConstraint.cs
- IxmlLineInfo.cs
- TransactedReceiveScope.cs
- mediapermission.cs
- coordinator.cs
- BamlReader.cs
- LinkGrep.cs
- BufferedGraphicsManager.cs
- DependencyPropertyAttribute.cs
- XmlWrappingReader.cs
- Module.cs
- Scalars.cs
- UdpTransportSettings.cs
- ComponentFactoryHelpers.cs
- HwndSourceParameters.cs
- WebServiceData.cs
- SerialErrors.cs
- ObjectNotFoundException.cs
- OleDbConnectionPoolGroupProviderInfo.cs
- XmlSchemaIdentityConstraint.cs
- SchemaExporter.cs
- PropertyGroupDescription.cs
- CornerRadius.cs
- BasicViewGenerator.cs
- Task.cs
- WSSecurityPolicy11.cs
- LinqDataSourceContextData.cs
- MenuRendererClassic.cs
- HebrewCalendar.cs
- ExecutionContext.cs