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
- FileEnumerator.cs
- XamlContextStack.cs
- ObjectSecurity.cs
- ServicePoint.cs
- MemberRelationshipService.cs
- DependencyPropertyKind.cs
- TiffBitmapEncoder.cs
- ImageMap.cs
- SqlRecordBuffer.cs
- NextPreviousPagerField.cs
- RadioButtonList.cs
- Accessors.cs
- ProfileProvider.cs
- WpfKnownTypeInvoker.cs
- ConnectorMovedEventArgs.cs
- Int16AnimationBase.cs
- httpapplicationstate.cs
- EntityDataSourceEntityTypeFilterItem.cs
- _SecureChannel.cs
- Encoder.cs
- Compiler.cs
- WmiInstallComponent.cs
- CodeVariableDeclarationStatement.cs
- BindingListCollectionView.cs
- RowToParametersTransformer.cs
- WinFormsComponentEditor.cs
- ApplicationManager.cs
- UserCancellationException.cs
- InkSerializer.cs
- DocumentScope.cs
- ColumnResizeUndoUnit.cs
- NamedPipeProcessProtocolHandler.cs
- MouseActionConverter.cs
- CfgSemanticTag.cs
- sqlmetadatafactory.cs
- PackageStore.cs
- Matrix3D.cs
- HtmlInputText.cs
- PropertyGridCommands.cs
- shaperfactoryquerycachekey.cs
- DbConnectionPoolIdentity.cs
- ListParagraph.cs
- DateTimeOffsetConverter.cs
- DATA_BLOB.cs
- HttpDictionary.cs
- OutputCacheSettingsSection.cs
- XmlReflectionMember.cs
- IndexedString.cs
- ObjectSecurity.cs
- WebServiceParameterData.cs
- DetailsViewRowCollection.cs
- RemotingException.cs
- Win32.cs
- DbDataAdapter.cs
- MemoryPressure.cs
- MultiSelectRootGridEntry.cs
- TextDecorationUnitValidation.cs
- TagNameToTypeMapper.cs
- RawTextInputReport.cs
- ObjectStateEntry.cs
- LicFileLicenseProvider.cs
- RectAnimationBase.cs
- DoubleStorage.cs
- DataGridViewTopRowAccessibleObject.cs
- SourceFileInfo.cs
- DesignerUtils.cs
- srgsitem.cs
- TraceListener.cs
- TreeViewImageGenerator.cs
- GridViewSortEventArgs.cs
- SystemIcmpV4Statistics.cs
- SubMenuStyle.cs
- XmlEventCache.cs
- ConfigXmlElement.cs
- _MultipleConnectAsync.cs
- DefaultValueAttribute.cs
- Attributes.cs
- BufferModesCollection.cs
- DataContract.cs
- Underline.cs
- DataBindingCollection.cs
- SpeakProgressEventArgs.cs
- TimeZone.cs
- DebuggerAttributes.cs
- StrongNameUtility.cs
- XmlEncodedRawTextWriter.cs
- DrawListViewColumnHeaderEventArgs.cs
- ValidatingPropertiesEventArgs.cs
- WindowsStartMenu.cs
- GorillaCodec.cs
- DataGridTextBoxColumn.cs
- SecurityTokenParameters.cs
- PresentationTraceSources.cs
- WsatTransactionHeader.cs
- securitycriticaldataformultiplegetandset.cs
- SystemIPAddressInformation.cs
- WebControlAdapter.cs
- Mappings.cs
- Point3DCollection.cs
- BitmapEffectvisualstate.cs