Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / xsp / System / Web / Configuration / ProcessHostConfigUtils.cs / 3 / ProcessHostConfigUtils.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.Configuration { using System.Configuration; using System.Collections; using System.Globalization; using System.Runtime.InteropServices; using System.Threading; using System.Xml; using System.Security; using System.Text; using System.Web.Util; using System.Web.UI; using System.IO; using System.Web.Hosting; using System.Runtime.ConstrainedExecution; // // Uses IIS 7 native config // internal static class ProcessHostConfigUtils { internal const uint DEFAULT_SITE_ID_UINT = 1; internal const string DEFAULT_SITE_ID_STRING = "1"; private static string s_defaultSiteName; private static int s_InitedExternalConfig; private static NativeConfigWrapper _configWrapper; // static class ctor static ProcessHostConfigUtils() { HttpRuntime.ForceStaticInit(); } internal static void InitStandaloneConfig() { if (!HostingEnvironment.IsUnderIISProcess) { if (!ServerConfig.UseMetabase) { int inited= Interlocked.Exchange(ref s_InitedExternalConfig, 1); // only do this once if (0 == inited) { _configWrapper = new NativeConfigWrapper(); } } } } internal static string MapPathActual(string siteName, VirtualPath path) { string physicalPath = null; IntPtr pBstr = IntPtr.Zero; int cBstr = 0; try { int result = UnsafeIISMethods.MgdMapPathDirect(siteName, path.VirtualPathString, out pBstr, out cBstr); if (result < 0) { throw new InvalidOperationException(SR.GetString(SR.Cannot_map_path, path.VirtualPathString)); } physicalPath = (pBstr != IntPtr.Zero) ? StringUtil.StringFromWCharPtr(pBstr, cBstr) : null; } finally { if (pBstr != IntPtr.Zero) { Marshal.FreeBSTR(pBstr); } } return physicalPath; } internal static string GetSiteNameFromId(uint siteId) { if ( siteId == DEFAULT_SITE_ID_UINT && s_defaultSiteName != null) { return s_defaultSiteName; } IntPtr pBstr = IntPtr.Zero; int cBstr = 0; string siteName = null; try { int result = UnsafeIISMethods.MgdGetSiteNameFromId(siteId, out pBstr, out cBstr); siteName = (result == 0 && pBstr != IntPtr.Zero) ? StringUtil.StringFromWCharPtr(pBstr, cBstr) : String.Empty; } finally { if (pBstr != IntPtr.Zero) { Marshal.FreeBSTR(pBstr); } } if ( siteId == DEFAULT_SITE_ID_UINT) { s_defaultSiteName = siteName; } return siteName; } private class NativeConfigWrapper : CriticalFinalizerObject { internal NativeConfigWrapper() { int result = UnsafeIISMethods.MgdInitNativeConfig(); if (result < 0) { s_InitedExternalConfig = 0; throw new InvalidOperationException(SR.GetString(SR.Cant_Init_Native_Config, result.ToString("X8", CultureInfo.InvariantCulture))); } } [ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)] ~NativeConfigWrapper() { UnsafeIISMethods.MgdTerminateNativeConfig(); } } } }
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Operator.cs
- WorkflowViewService.cs
- CalculatedColumn.cs
- TypeAccessException.cs
- UnicodeEncoding.cs
- ListViewContainer.cs
- ProfileModule.cs
- Label.cs
- CredentialCache.cs
- ConfigurationValidatorBase.cs
- CodeArrayIndexerExpression.cs
- DataGridViewRowDividerDoubleClickEventArgs.cs
- DbConnectionStringBuilder.cs
- ApplicationServiceHelper.cs
- UnknownBitmapDecoder.cs
- PointAnimationUsingPath.cs
- EventDrivenDesigner.cs
- StateItem.cs
- StatusBarDrawItemEvent.cs
- IntPtr.cs
- Activator.cs
- XmlIncludeAttribute.cs
- WebBrowserNavigatingEventHandler.cs
- DynamicRendererThreadManager.cs
- DefaultProxySection.cs
- IPHostEntry.cs
- AppendHelper.cs
- DateTimeConstantAttribute.cs
- UserControlFileEditor.cs
- RadialGradientBrush.cs
- HtmlTableCellCollection.cs
- printdlgexmarshaler.cs
- ImportedNamespaceContextItem.cs
- PermissionToken.cs
- InterleavedZipPartStream.cs
- TypeDescriptionProviderAttribute.cs
- Types.cs
- ResourceManagerWrapper.cs
- StylusPlugInCollection.cs
- PenThreadPool.cs
- EnumUnknown.cs
- RuntimeConfigLKG.cs
- SplitterCancelEvent.cs
- SchemaComplexType.cs
- ImportCatalogPart.cs
- EndEvent.cs
- Vars.cs
- _UriTypeConverter.cs
- WindowsListView.cs
- OdbcFactory.cs
- GridViewEditEventArgs.cs
- FieldAccessException.cs
- ReachPageContentCollectionSerializer.cs
- MenuItemStyleCollection.cs
- LogReservationCollection.cs
- ImmutableObjectAttribute.cs
- TransformConverter.cs
- BooleanAnimationBase.cs
- WebServiceErrorEvent.cs
- HitTestFilterBehavior.cs
- DescendantOverDescendantQuery.cs
- BindingCompleteEventArgs.cs
- FlowDocumentReader.cs
- DataRowExtensions.cs
- OracleConnection.cs
- AtomServiceDocumentSerializer.cs
- VirtualPath.cs
- HtmlInputReset.cs
- UIElement.cs
- CharStorage.cs
- CryptoApi.cs
- GraphicsContext.cs
- SafeFileHandle.cs
- ManagementException.cs
- SelectionProcessor.cs
- SelectionItemPattern.cs
- ConstraintStruct.cs
- PriorityQueue.cs
- Maps.cs
- SyndicationSerializer.cs
- SerializerWriterEventHandlers.cs
- ListItemsCollectionEditor.cs
- TrimSurroundingWhitespaceAttribute.cs
- TextTreeNode.cs
- CodeCommentStatement.cs
- DataGridViewColumn.cs
- CommandEventArgs.cs
- WeakReferenceEnumerator.cs
- CursorConverter.cs
- XXXOnTypeBuilderInstantiation.cs
- JobInputBins.cs
- MenuAutoFormat.cs
- CallbackValidator.cs
- MergePropertyDescriptor.cs
- Content.cs
- ObjectCloneHelper.cs
- CompiledQuery.cs
- SystemMulticastIPAddressInformation.cs
- MediaElementAutomationPeer.cs
- ASCIIEncoding.cs