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
- RangeBaseAutomationPeer.cs
- TextTreeInsertUndoUnit.cs
- SecureConversationDriver.cs
- XmlToDatasetMap.cs
- PrePostDescendentsWalker.cs
- ModuleElement.cs
- ToolStripCodeDomSerializer.cs
- SqlNamer.cs
- ContextMenuService.cs
- PersistNameAttribute.cs
- TabPage.cs
- SqlDataSourceView.cs
- EventPropertyMap.cs
- AmbientProperties.cs
- Style.cs
- RequestSecurityTokenForRemoteTokenFactory.cs
- NonNullItemCollection.cs
- InputLanguageProfileNotifySink.cs
- IndexedWhereQueryOperator.cs
- RuleInfoComparer.cs
- RemotingServices.cs
- PerformanceCounterManager.cs
- XmlSchemaComplexContentExtension.cs
- ButtonChrome.cs
- BrowserCapabilitiesCodeGenerator.cs
- PrintPreviewDialog.cs
- HandleCollector.cs
- BamlRecordReader.cs
- ProtectedConfigurationSection.cs
- Color.cs
- _NegoState.cs
- TypeHelpers.cs
- PrivilegeNotHeldException.cs
- FontStyle.cs
- RotateTransform3D.cs
- SqlNodeAnnotations.cs
- ProcessManager.cs
- SubtreeProcessor.cs
- EventLogInformation.cs
- FormViewInsertedEventArgs.cs
- ServicePoint.cs
- XmlAnyElementAttributes.cs
- QilTypeChecker.cs
- VerificationAttribute.cs
- ObjectStateEntryBaseUpdatableDataRecord.cs
- StrokeFIndices.cs
- XpsThumbnail.cs
- TcpActivation.cs
- Composition.cs
- MetadataException.cs
- ExtensionFile.cs
- DatagridviewDisplayedBandsData.cs
- EndpointIdentityConverter.cs
- Token.cs
- EntityDataSourceState.cs
- IconConverter.cs
- TextEndOfParagraph.cs
- HwndSourceKeyboardInputSite.cs
- ErrorTableItemStyle.cs
- SolidColorBrush.cs
- xml.cs
- SettingsPropertyWrongTypeException.cs
- ToolboxItemCollection.cs
- NativeMsmqMessage.cs
- LinqDataSourceHelper.cs
- TransportationConfigurationTypeInstallComponent.cs
- DataGridViewCellCollection.cs
- TickBar.cs
- EventProvider.cs
- BufferModeSettings.cs
- DataFieldConverter.cs
- ApplicationSecurityManager.cs
- FlowDecision.cs
- XPathSelfQuery.cs
- CapabilitiesAssignment.cs
- X509PeerCertificateAuthentication.cs
- ClientBuildManagerCallback.cs
- SecurityRuntime.cs
- StateMachineWorkflowDesigner.cs
- FixedSchema.cs
- TimeStampChecker.cs
- OperationCanceledException.cs
- ActivityIdHeader.cs
- CodeTypeReference.cs
- ProfileService.cs
- altserialization.cs
- Utils.cs
- XmlRawWriter.cs
- DBConcurrencyException.cs
- ReflectTypeDescriptionProvider.cs
- StorageRoot.cs
- COM2Enum.cs
- Typeface.cs
- DataViewManagerListItemTypeDescriptor.cs
- ErrorWebPart.cs
- TableItemStyle.cs
- HtmlAnchor.cs
- CheckBoxRenderer.cs
- ParameterReplacerVisitor.cs
- RotateTransform.cs