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
- DataGridViewButtonCell.cs
- ObjectDataSourceFilteringEventArgs.cs
- MarkupCompilePass1.cs
- CopyNodeSetAction.cs
- TCPClient.cs
- ObjectNavigationPropertyMapping.cs
- Flattener.cs
- TextDecorations.cs
- WmpBitmapDecoder.cs
- RowToFieldTransformer.cs
- DataControlFieldHeaderCell.cs
- FormsAuthenticationUser.cs
- ClrPerspective.cs
- KeyedHashAlgorithm.cs
- OperationFormatUse.cs
- XmlDocumentSurrogate.cs
- DocumentPageView.cs
- EventToken.cs
- AudioLevelUpdatedEventArgs.cs
- SoapInteropTypes.cs
- StylusButtonEventArgs.cs
- AlignmentYValidation.cs
- XmlDeclaration.cs
- KeyNotFoundException.cs
- StylusEventArgs.cs
- ScriptReferenceEventArgs.cs
- RegexInterpreter.cs
- HtmlTableRow.cs
- CultureInfoConverter.cs
- SiteMapProvider.cs
- PasswordBox.cs
- ResourceDefaultValueAttribute.cs
- wgx_exports.cs
- RankException.cs
- DragEventArgs.cs
- IncrementalReadDecoders.cs
- LongMinMaxAggregationOperator.cs
- ContextStaticAttribute.cs
- TrackingMemoryStream.cs
- VisualStyleRenderer.cs
- PeerNameRecordCollection.cs
- _AuthenticationState.cs
- BatchWriter.cs
- HtmlInputImage.cs
- PreviewKeyDownEventArgs.cs
- RNGCryptoServiceProvider.cs
- OracleParameterBinding.cs
- IIS7UserPrincipal.cs
- Matrix3DValueSerializer.cs
- CollectionContainer.cs
- AssemblyEvidenceFactory.cs
- LinearGradientBrush.cs
- DataSourceGeneratorException.cs
- FixedSOMLineCollection.cs
- Form.cs
- ArrayListCollectionBase.cs
- XamlDesignerSerializationManager.cs
- SqlClientPermission.cs
- DataAdapter.cs
- ObservableCollection.cs
- SharedStatics.cs
- CryptoProvider.cs
- MsmqMessageProperty.cs
- OneToOneMappingSerializer.cs
- AuthenticationSection.cs
- IISMapPath.cs
- ControlAdapter.cs
- Durable.cs
- SortDescription.cs
- MimeMultiPart.cs
- DataGridViewTextBoxCell.cs
- TypeTypeConverter.cs
- CollectionChangeEventArgs.cs
- UniformGrid.cs
- WebPartConnectionsConnectVerb.cs
- SuppressMergeCheckAttribute.cs
- TextPenaltyModule.cs
- AssemblyCollection.cs
- EventProviderTraceListener.cs
- ApplicationSettingsBase.cs
- SafeProcessHandle.cs
- ScriptRef.cs
- MimeMultiPart.cs
- XmlEventCache.cs
- FamilyTypefaceCollection.cs
- SinglePageViewer.cs
- TextRunTypographyProperties.cs
- TreeViewDataItemAutomationPeer.cs
- BindingContext.cs
- StoragePropertyMapping.cs
- TypeProvider.cs
- ContextMenu.cs
- MenuItem.cs
- GroupPartitionExpr.cs
- ComboBox.cs
- SoapEnvelopeProcessingElement.cs
- ProgressChangedEventArgs.cs
- Psha1DerivedKeyGenerator.cs
- HashHelper.cs
- ImpersonationContext.cs