Code:
/ FX-1434 / FX-1434 / 1.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
- MessagePartProtectionMode.cs
- NetworkStream.cs
- EventMap.cs
- ArgumentDesigner.xaml.cs
- BindingCompleteEventArgs.cs
- CacheManager.cs
- FlowLayout.cs
- storepermissionattribute.cs
- TextViewElement.cs
- GridItem.cs
- GenericWebPart.cs
- PropagatorResult.cs
- Root.cs
- Decimal.cs
- SqlMethodCallConverter.cs
- UniqueEventHelper.cs
- XPathAxisIterator.cs
- HighlightOverlayGlyph.cs
- OleDbParameterCollection.cs
- PngBitmapDecoder.cs
- FragmentQuery.cs
- SmtpMail.cs
- HtmlInputSubmit.cs
- FileController.cs
- DataGridColumnCollection.cs
- GridViewSortEventArgs.cs
- Light.cs
- CollectionBase.cs
- TableParaClient.cs
- AssemblyAttributes.cs
- SiteMapNodeItemEventArgs.cs
- WebPermission.cs
- SQLBinary.cs
- DataError.cs
- fixedPageContentExtractor.cs
- HandlerBase.cs
- SQLStringStorage.cs
- SerializerDescriptor.cs
- ContractBase.cs
- EventSetterHandlerConverter.cs
- Debug.cs
- DesignTimeHTMLTextWriter.cs
- TableRow.cs
- mediaeventshelper.cs
- SHA384.cs
- _RegBlobWebProxyDataBuilder.cs
- ConfigurationFileMap.cs
- OutOfProcStateClientManager.cs
- TokenBasedSet.cs
- WebServiceClientProxyGenerator.cs
- FixedFlowMap.cs
- ToolBarButton.cs
- BeginStoryboard.cs
- Deflater.cs
- ValueChangedEventManager.cs
- PersistenceTypeAttribute.cs
- WinEventTracker.cs
- NumberSubstitution.cs
- ServiceChannelManager.cs
- XmlSchemaFacet.cs
- control.ime.cs
- CollectionBase.cs
- DataObject.cs
- ContainerVisual.cs
- GridViewItemAutomationPeer.cs
- CompoundFileStreamReference.cs
- ServicePointManagerElement.cs
- StaticExtensionConverter.cs
- RepeaterItem.cs
- PaperSize.cs
- SqlXmlStorage.cs
- DataGridViewColumnHeaderCell.cs
- XPathCompileException.cs
- InheritanceAttribute.cs
- UnsafeNativeMethodsPenimc.cs
- TypeElement.cs
- configsystem.cs
- ToolStripButton.cs
- SoapReflectionImporter.cs
- XmlSignatureProperties.cs
- IndicFontClient.cs
- ApplicationProxyInternal.cs
- ProfileGroupSettingsCollection.cs
- ResolveResponseInfo.cs
- SimpleType.cs
- Matrix3DStack.cs
- UserControlParser.cs
- ViewStateModeByIdAttribute.cs
- XmlHelper.cs
- XmlILOptimizerVisitor.cs
- ClientOperation.cs
- BufferBuilder.cs
- RectConverter.cs
- DataRecordInfo.cs
- SafeEventLogWriteHandle.cs
- TypeConvertions.cs
- DBNull.cs
- FixedFindEngine.cs
- UmAlQuraCalendar.cs
- StylusPoint.cs