Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / DEVDIV / depot / DevDiv / releases / whidbey / QFE / ndp / fx / src / xsp / System / Web / DataAccess / ADConnectionHelper.cs / 1 / ADConnectionHelper.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.DataAccess { using System.Net; using System.Diagnostics; using System.Web.Hosting; using System.Web.Security; using System.DirectoryServices; using System.DirectoryServices.Protocols; internal static class ActiveDirectoryConnectionHelper { internal static DirectoryEntryHolder GetDirectoryEntry(DirectoryInformation directoryInfo, string objectDN, bool revertImpersonation) { Debug.Assert ((objectDN != null) && (objectDN.Length != 0)); // // Get the adspath and create a directory entry holder // DirectoryEntryHolder holder = new DirectoryEntryHolder(new DirectoryEntry ( directoryInfo.GetADsPath(objectDN), directoryInfo.GetUsername(), directoryInfo.GetPassword(), directoryInfo.AuthenticationTypes)); // // If revertImpersonation is true, we need to revert // holder.Open(null, revertImpersonation); return holder; } } internal sealed class DirectoryEntryHolder { private ImpersonationContext ctx = null; private bool opened; private DirectoryEntry entry; internal DirectoryEntryHolder (DirectoryEntry entry) { Debug.Assert (entry != null); this.entry = entry; } internal void Open (HttpContext context, bool revertImpersonate) { if (opened) return; // Already opened // // Revert client impersonation if required // if (revertImpersonate) { ctx = new ApplicationImpersonationContext(); } else { ctx = null; } opened = true; // Open worked! } internal void Close () { if (!opened) // Not open! return; entry.Dispose(); RestoreImpersonation(); opened = false; } internal void RestoreImpersonation() { // Restore impersonation if (ctx != null) { ctx.Undo(); ctx = null; } } internal DirectoryEntry DirectoryEntry { get { return entry; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.DataAccess { using System.Net; using System.Diagnostics; using System.Web.Hosting; using System.Web.Security; using System.DirectoryServices; using System.DirectoryServices.Protocols; internal static class ActiveDirectoryConnectionHelper { internal static DirectoryEntryHolder GetDirectoryEntry(DirectoryInformation directoryInfo, string objectDN, bool revertImpersonation) { Debug.Assert ((objectDN != null) && (objectDN.Length != 0)); // // Get the adspath and create a directory entry holder // DirectoryEntryHolder holder = new DirectoryEntryHolder(new DirectoryEntry ( directoryInfo.GetADsPath(objectDN), directoryInfo.GetUsername(), directoryInfo.GetPassword(), directoryInfo.AuthenticationTypes)); // // If revertImpersonation is true, we need to revert // holder.Open(null, revertImpersonation); return holder; } } internal sealed class DirectoryEntryHolder { private ImpersonationContext ctx = null; private bool opened; private DirectoryEntry entry; internal DirectoryEntryHolder (DirectoryEntry entry) { Debug.Assert (entry != null); this.entry = entry; } internal void Open (HttpContext context, bool revertImpersonate) { if (opened) return; // Already opened // // Revert client impersonation if required // if (revertImpersonate) { ctx = new ApplicationImpersonationContext(); } else { ctx = null; } opened = true; // Open worked! } internal void Close () { if (!opened) // Not open! return; entry.Dispose(); RestoreImpersonation(); opened = false; } internal void RestoreImpersonation() { // Restore impersonation if (ctx != null) { ctx.Undo(); ctx = null; } } internal DirectoryEntry DirectoryEntry { get { return entry; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- CatalogPart.cs
- ListSortDescription.cs
- BaseProcessor.cs
- ProcessDesigner.cs
- AutomationElementCollection.cs
- ScriptManagerProxy.cs
- EmptyElement.cs
- QilSortKey.cs
- CodeBinaryOperatorExpression.cs
- ChannelManager.cs
- DayRenderEvent.cs
- XmlSchemaFacet.cs
- DesignerActionHeaderItem.cs
- WebSysDisplayNameAttribute.cs
- TerminatorSinks.cs
- Compiler.cs
- DataRowExtensions.cs
- PartialTrustVisibleAssemblyCollection.cs
- TextSchema.cs
- LineGeometry.cs
- StrokeNodeOperations2.cs
- XmlDomTextWriter.cs
- CollectionViewGroupInternal.cs
- RtfToken.cs
- LazyTextWriterCreator.cs
- AsymmetricKeyExchangeFormatter.cs
- SafeLibraryHandle.cs
- XPathDocumentBuilder.cs
- BitConverter.cs
- XmlAttribute.cs
- Statements.cs
- WorkflowRuntimeServicesBehavior.cs
- ControlAdapter.cs
- FlowDecisionLabelFeature.cs
- ConfigurationManagerHelper.cs
- SurrogateSelector.cs
- DbMetaDataCollectionNames.cs
- FrugalList.cs
- CustomAttributeBuilder.cs
- ParameterEditorUserControl.cs
- ResolvedKeyFrameEntry.cs
- FileStream.cs
- ScalarOps.cs
- HMACSHA1.cs
- SerializableTypeCodeDomSerializer.cs
- DrawingContextWalker.cs
- XmlSchemaNotation.cs
- NameScopePropertyAttribute.cs
- WebServiceParameterData.cs
- KeyValueInternalCollection.cs
- AstNode.cs
- Ref.cs
- SourceFileInfo.cs
- NavigationProgressEventArgs.cs
- ByteKeyFrameCollection.cs
- Predicate.cs
- TextParagraphCache.cs
- MappedMetaModel.cs
- NumericPagerField.cs
- FloatAverageAggregationOperator.cs
- RegionData.cs
- PreProcessInputEventArgs.cs
- BlurBitmapEffect.cs
- DataGridViewToolTip.cs
- Base64Encoder.cs
- IdnElement.cs
- PathGradientBrush.cs
- StrongNameKeyPair.cs
- CommandExpr.cs
- OleServicesContext.cs
- filewebresponse.cs
- TabPage.cs
- Single.cs
- DataColumnMappingCollection.cs
- IntPtr.cs
- SqlNotificationRequest.cs
- TextEditorMouse.cs
- Latin1Encoding.cs
- SoapSchemaImporter.cs
- KeyInterop.cs
- ServicePointManager.cs
- WindowInteropHelper.cs
- SQLInt16.cs
- SelectionEditor.cs
- ErrorHandler.cs
- FloaterParagraph.cs
- PauseStoryboard.cs
- MailDefinition.cs
- WindowsToolbarAsMenu.cs
- WebBrowsableAttribute.cs
- WeakReference.cs
- SystemColors.cs
- FontEmbeddingManager.cs
- InheritablePropertyChangeInfo.cs
- PersonalizationStateInfo.cs
- TextTreeRootTextBlock.cs
- ConnectorMovedEventArgs.cs
- MarkedHighlightComponent.cs
- counter.cs
- SafePipeHandle.cs