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
- FunctionUpdateCommand.cs
- uribuilder.cs
- GlobalizationSection.cs
- DropSource.cs
- GradientSpreadMethodValidation.cs
- _LocalDataStore.cs
- COM2Properties.cs
- HttpPostClientProtocol.cs
- TypeBuilder.cs
- PreviewPrintController.cs
- SelectorItemAutomationPeer.cs
- OdbcParameter.cs
- FileInfo.cs
- FontWeightConverter.cs
- ObjectStorage.cs
- EditorServiceContext.cs
- HostingEnvironment.cs
- configsystem.cs
- IsolatedStoragePermission.cs
- PanelStyle.cs
- TypeSystem.cs
- ServiceTimeoutsElement.cs
- TCPListener.cs
- VersionedStreamOwner.cs
- TemplateApplicationHelper.cs
- XmlCompatibilityReader.cs
- _LoggingObject.cs
- DateTimeConstantAttribute.cs
- PassportAuthenticationModule.cs
- _HeaderInfoTable.cs
- Emitter.cs
- XPathPatternBuilder.cs
- HtmlControl.cs
- XPathAncestorQuery.cs
- ScrollEventArgs.cs
- ManagedIStream.cs
- LookupNode.cs
- InputMethod.cs
- WebConfigurationHostFileChange.cs
- TrayIconDesigner.cs
- EnumerableValidator.cs
- CompilationUnit.cs
- FilteredAttributeCollection.cs
- documentsequencetextcontainer.cs
- SizeFConverter.cs
- PropertyEmitterBase.cs
- PageBreakRecord.cs
- ServiceChannelManager.cs
- translator.cs
- PropertyGridDesigner.cs
- HtmlContainerControl.cs
- CriticalExceptions.cs
- RenderData.cs
- SymmetricAlgorithm.cs
- ApplicationDirectory.cs
- CustomTypeDescriptor.cs
- ConfigurationSectionGroupCollection.cs
- SoapProcessingBehavior.cs
- TypeConstant.cs
- ButtonPopupAdapter.cs
- GenericTextProperties.cs
- WebPartZone.cs
- ButtonStandardAdapter.cs
- DescriptionAttribute.cs
- DSASignatureFormatter.cs
- Debug.cs
- HtmlLink.cs
- ProcessRequestArgs.cs
- UniqueIdentifierService.cs
- InputBinding.cs
- SafeRightsManagementQueryHandle.cs
- Light.cs
- ScalarType.cs
- CriticalExceptions.cs
- TextContainerHelper.cs
- CompositeFontFamily.cs
- LogSwitch.cs
- indexingfiltermarshaler.cs
- HttpServerChannel.cs
- RowCache.cs
- StylusDevice.cs
- SchemaTableOptionalColumn.cs
- CollectionsUtil.cs
- basevalidator.cs
- HttpListenerContext.cs
- DownloadProgressEventArgs.cs
- PathData.cs
- SystemSounds.cs
- TextSearch.cs
- Soap12ProtocolReflector.cs
- WorkflowOwnerAsyncResult.cs
- ProgramNode.cs
- Int16KeyFrameCollection.cs
- WebBrowserNavigatedEventHandler.cs
- CodeObjectCreateExpression.cs
- ExtentJoinTreeNode.cs
- ThicknessAnimation.cs
- ChineseLunisolarCalendar.cs
- COAUTHINFO.cs
- EditCommandColumn.cs