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
- ConnectionConsumerAttribute.cs
- TreeNode.cs
- CroppedBitmap.cs
- RNGCryptoServiceProvider.cs
- ViewLoader.cs
- Latin1Encoding.cs
- AdornerDecorator.cs
- ObjectPropertyMapping.cs
- PackagePartCollection.cs
- MarginCollapsingState.cs
- unsafenativemethodsother.cs
- ServicesUtilities.cs
- QuotedStringWriteStateInfo.cs
- XmlSchemaSimpleTypeRestriction.cs
- WebPartConnectionsConnectVerb.cs
- CreateSequenceResponse.cs
- WorkflowDataContext.cs
- StandardBindingElement.cs
- HttpCapabilitiesBase.cs
- Variable.cs
- MetadataUtil.cs
- OnOperation.cs
- PersistencePipeline.cs
- ConfigsHelper.cs
- iisPickupDirectory.cs
- GridViewCellAutomationPeer.cs
- CssStyleCollection.cs
- SqlDataSourceConfigureSortForm.cs
- SqlComparer.cs
- LabelEditEvent.cs
- WebResponse.cs
- ListItem.cs
- X509CertificateRecipientClientCredential.cs
- LinkedResourceCollection.cs
- UserPrincipalNameElement.cs
- XmlText.cs
- HttpResponseInternalWrapper.cs
- SectionInformation.cs
- UnhandledExceptionEventArgs.cs
- MetadataFile.cs
- RequestCachePolicy.cs
- UriSection.cs
- selecteditemcollection.cs
- FileInfo.cs
- Bits.cs
- MeshGeometry3D.cs
- Padding.cs
- Condition.cs
- TimeSpanMinutesConverter.cs
- Stack.cs
- ResourcePart.cs
- ScriptModule.cs
- PopupControlService.cs
- UndoManager.cs
- RMPermissions.cs
- BindingValueChangedEventArgs.cs
- Stream.cs
- GroupJoinQueryOperator.cs
- DataControlImageButton.cs
- DefaultProxySection.cs
- ColumnHeaderCollectionEditor.cs
- QilUnary.cs
- SamlAction.cs
- CreateUserErrorEventArgs.cs
- IUnknownConstantAttribute.cs
- ConfigXmlAttribute.cs
- ScrollViewer.cs
- AnnotationHighlightLayer.cs
- DesignBinding.cs
- RegistryPermission.cs
- ResourceSet.cs
- XmlSchemaSimpleContentRestriction.cs
- SmiMetaDataProperty.cs
- CurrentChangingEventArgs.cs
- CaseInsensitiveOrdinalStringComparer.cs
- FixedPageStructure.cs
- FastEncoderWindow.cs
- UriWriter.cs
- EndpointAddressMessageFilter.cs
- NameValueCollection.cs
- FixedTextView.cs
- LingerOption.cs
- AuthStoreRoleProvider.cs
- ButtonFlatAdapter.cs
- PlatformNotSupportedException.cs
- TransformCollection.cs
- isolationinterop.cs
- RegexCode.cs
- XPathQilFactory.cs
- DecimalAnimation.cs
- UserNameSecurityToken.cs
- SoapInteropTypes.cs
- DoubleLinkListEnumerator.cs
- RenderContext.cs
- SqlProviderServices.cs
- WebPartConnectionsDisconnectVerb.cs
- UrlMappingCollection.cs
- SecUtil.cs
- PersonalizableTypeEntry.cs
- DataServiceCollectionOfT.cs