Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / fx / src / xsp / System / Web / Configuration / ProcessHostConfigUtils.cs / 1 / 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. // //----------------------------------------------------------------------------- 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- MessageQueuePermissionAttribute.cs
- CatalogZoneBase.cs
- DataGridRow.cs
- TableColumn.cs
- OperationParameterInfo.cs
- SoapMessage.cs
- EdmComplexTypeAttribute.cs
- FieldCollectionEditor.cs
- PropertyPath.cs
- BufferedGraphics.cs
- DrawingGroupDrawingContext.cs
- SessionStateModule.cs
- SamlAudienceRestrictionCondition.cs
- SmtpReplyReader.cs
- TextFormatterImp.cs
- NetDispatcherFaultException.cs
- SimpleWebHandlerParser.cs
- DbModificationClause.cs
- BindingMAnagerBase.cs
- ConstructorNeedsTagAttribute.cs
- EventListenerClientSide.cs
- ZoneMembershipCondition.cs
- WeakHashtable.cs
- StringToken.cs
- XmlSchemaNotation.cs
- XsltContext.cs
- BoundsDrawingContextWalker.cs
- StorageBasedPackageProperties.cs
- RegexCompiler.cs
- KeyNotFoundException.cs
- Rect.cs
- DialogWindow.cs
- DtdParser.cs
- DrawingBrush.cs
- PersonalizationStateInfo.cs
- ValidationEventArgs.cs
- CatalogZoneBase.cs
- SchemaSetCompiler.cs
- MouseGesture.cs
- Directory.cs
- ReadOnlyTernaryTree.cs
- CultureTable.cs
- DeploymentSection.cs
- CodeStatementCollection.cs
- TreeIterators.cs
- EventListener.cs
- MatrixUtil.cs
- DesignTimeParseData.cs
- X509Chain.cs
- BrushConverter.cs
- ContainerUIElement3D.cs
- httpserverutility.cs
- ProtocolReflector.cs
- Interop.cs
- WorkflowInstanceTerminatedRecord.cs
- SettingsPropertyValue.cs
- ExpanderAutomationPeer.cs
- WinEventTracker.cs
- FontUnit.cs
- DoubleAnimationUsingPath.cs
- DefaultProxySection.cs
- EncodingTable.cs
- SignerInfo.cs
- InvalidOleVariantTypeException.cs
- AnnotationObservableCollection.cs
- MulticastDelegate.cs
- Win32KeyboardDevice.cs
- TrustSection.cs
- ListViewDeletedEventArgs.cs
- CompleteWizardStep.cs
- WindowsButton.cs
- MappingSource.cs
- QueryOutputWriter.cs
- BinaryHeap.cs
- SqlGatherConsumedAliases.cs
- SecurityPermission.cs
- Bitmap.cs
- VisualProxy.cs
- ModifiableIteratorCollection.cs
- PageSettings.cs
- PerformanceCounterManager.cs
- WebPartTransformerCollection.cs
- ControlBuilder.cs
- CellParaClient.cs
- ProcessActivityTreeOptions.cs
- DataGridViewTextBoxCell.cs
- TypedTableBase.cs
- FilteredXmlReader.cs
- _HTTPDateParse.cs
- InheritanceRules.cs
- ASCIIEncoding.cs
- RootContext.cs
- NamespaceInfo.cs
- ContainerControl.cs
- KeyEventArgs.cs
- _Win32.cs
- PerformanceCounterPermission.cs
- PropertyIDSet.cs
- DesignOnlyAttribute.cs
- Code.cs