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
- UnionCodeGroup.cs
- Native.cs
- ViewGenerator.cs
- SqlMethodTransformer.cs
- DataGridColumnHeadersPresenterAutomationPeer.cs
- TextRunCache.cs
- TypedTableBaseExtensions.cs
- ThreadSafeList.cs
- ThicknessKeyFrameCollection.cs
- CodeRegionDirective.cs
- HTTPNotFoundHandler.cs
- DataServiceException.cs
- basevalidator.cs
- RemotingException.cs
- DetailsViewRow.cs
- PerformanceCounterLib.cs
- WebPartActionVerb.cs
- NetDataContractSerializer.cs
- IDReferencePropertyAttribute.cs
- WhitespaceRule.cs
- AppSettingsReader.cs
- PageContentCollection.cs
- XmlDataSourceView.cs
- GlobalEventManager.cs
- SchemaNames.cs
- storepermission.cs
- FixedElement.cs
- OfTypeExpression.cs
- WindowsRebar.cs
- LiteralTextContainerControlBuilder.cs
- ToggleProviderWrapper.cs
- sqlstateclientmanager.cs
- EventWaitHandleSecurity.cs
- AtomServiceDocumentSerializer.cs
- CustomErrorCollection.cs
- MsmqAppDomainProtocolHandler.cs
- Polyline.cs
- WindowsFormsHostPropertyMap.cs
- SafeFindHandle.cs
- ITreeGenerator.cs
- FlowDocumentFormatter.cs
- SearchExpression.cs
- DesignerImageAdapter.cs
- CngKeyCreationParameters.cs
- listitem.cs
- MsmqAuthenticationMode.cs
- DateTimeFormatInfoScanner.cs
- ComMethodElementCollection.cs
- EntityClientCacheKey.cs
- ObjectStateEntry.cs
- WCFServiceClientProxyGenerator.cs
- BindingListCollectionView.cs
- StreamedFramingRequestChannel.cs
- TextFormatterImp.cs
- QueryCacheEntry.cs
- Geometry.cs
- TextRunTypographyProperties.cs
- AspCompat.cs
- TableCellCollection.cs
- FastEncoder.cs
- ImageListDesigner.cs
- XmlSchemaCollection.cs
- CodeTypeReferenceCollection.cs
- SequenceQuery.cs
- EventTrigger.cs
- AppPool.cs
- UnauthorizedWebPart.cs
- GenericTextProperties.cs
- CheckedListBox.cs
- SQLBytes.cs
- Rule.cs
- RadialGradientBrush.cs
- AutoResizedEvent.cs
- SerialStream.cs
- BaseDataBoundControl.cs
- WebPartChrome.cs
- ReadOnlyCollectionBase.cs
- CharUnicodeInfo.cs
- StreamSecurityUpgradeInitiatorAsyncResult.cs
- ConnectionStringSettingsCollection.cs
- DurableInstanceProvider.cs
- StringKeyFrameCollection.cs
- PerformanceCounterManager.cs
- NavigationPropertyEmitter.cs
- BitmapEffectState.cs
- WebBrowserDocumentCompletedEventHandler.cs
- ControlIdConverter.cs
- SettingsPropertyIsReadOnlyException.cs
- NetCodeGroup.cs
- SqlConnectionString.cs
- PriorityBindingExpression.cs
- PagedDataSource.cs
- BindingManagerDataErrorEventArgs.cs
- SignedPkcs7.cs
- EditingMode.cs
- InputElement.cs
- CodeTypeMemberCollection.cs
- MsmqEncryptionAlgorithm.cs
- TraceUtils.cs
- ConnectionManagementElement.cs