Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / ndp / fx / src / xsp / System / Web / Configuration / ProcessHostConfigUtils.cs / 2 / 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(); } } } } // 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
- Claim.cs
- IteratorFilter.cs
- DynamicEndpoint.cs
- ZipIOBlockManager.cs
- MarkupObject.cs
- StringDictionaryCodeDomSerializer.cs
- ThousandthOfEmRealDoubles.cs
- LinkedResource.cs
- ConsumerConnectionPointCollection.cs
- BevelBitmapEffect.cs
- BindingOperations.cs
- SaveFileDialog.cs
- OutKeywords.cs
- AssemblyCache.cs
- basevalidator.cs
- CachedTypeface.cs
- TableLayoutRowStyleCollection.cs
- SignatureToken.cs
- DataControlField.cs
- precedingsibling.cs
- Pen.cs
- DataSvcMapFile.cs
- EFAssociationProvider.cs
- SynchronizingStream.cs
- WSFederationHttpBinding.cs
- RSAOAEPKeyExchangeDeformatter.cs
- PropertyDescriptor.cs
- Rectangle.cs
- EditingMode.cs
- XsltQilFactory.cs
- EnvelopedSignatureTransform.cs
- TextSelectionHelper.cs
- DataControlLinkButton.cs
- ThemeDirectoryCompiler.cs
- FunctionImportElement.cs
- ComboBox.cs
- storepermission.cs
- While.cs
- XPathNavigatorKeyComparer.cs
- SplitterCancelEvent.cs
- DataGridViewBindingCompleteEventArgs.cs
- EntityDataSourceDesignerHelper.cs
- StringDictionaryCodeDomSerializer.cs
- ResourceCategoryAttribute.cs
- DocumentDesigner.cs
- FileRecordSequence.cs
- TemplateGroupCollection.cs
- ProviderCollection.cs
- MinMaxParagraphWidth.cs
- ResourceProviderFactory.cs
- StaticSiteMapProvider.cs
- AppDomainManager.cs
- Double.cs
- EncoderBestFitFallback.cs
- streamingZipPartStream.cs
- LingerOption.cs
- ObjectDataSourceDisposingEventArgs.cs
- VectorAnimationBase.cs
- DataGridViewSelectedColumnCollection.cs
- ContainerUtilities.cs
- ColumnHeaderConverter.cs
- SortedSetDebugView.cs
- TargetException.cs
- ScriptingJsonSerializationSection.cs
- XmlNodeList.cs
- KnownIds.cs
- XmlTypeMapping.cs
- MatrixAnimationUsingPath.cs
- EdmFunction.cs
- Translator.cs
- TextRunCache.cs
- Activator.cs
- Journal.cs
- PtsPage.cs
- CallSiteOps.cs
- WebPartConnectionsDisconnectVerb.cs
- DataSpaceManager.cs
- AxisAngleRotation3D.cs
- RightNameExpirationInfoPair.cs
- HttpCacheVaryByContentEncodings.cs
- PresentationTraceSources.cs
- XamlBrushSerializer.cs
- AdornerDecorator.cs
- MessageBox.cs
- GenericsInstances.cs
- GlyphRunDrawing.cs
- AbsoluteQuery.cs
- PropertyRecord.cs
- Menu.cs
- SafePointer.cs
- Message.cs
- MediaElementAutomationPeer.cs
- ExpressionBinding.cs
- AdornerDecorator.cs
- WindowsGraphicsCacheManager.cs
- InputBindingCollection.cs
- SafeNativeMethods.cs
- SqlRetyper.cs
- AppSettingsReader.cs
- DataTableCollection.cs