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
- xmlsaver.cs
- UnsafeNativeMethodsMilCoreApi.cs
- SortableBindingList.cs
- Thickness.cs
- Int32.cs
- TTSEvent.cs
- GlobalizationSection.cs
- TypeInitializationException.cs
- DesignerSerializationOptionsAttribute.cs
- TimeSpanConverter.cs
- CustomErrorsSectionWrapper.cs
- TextServicesManager.cs
- PathNode.cs
- Perspective.cs
- AssemblySettingAttributes.cs
- DocumentViewerConstants.cs
- DocumentEventArgs.cs
- HttpsChannelFactory.cs
- EventProxy.cs
- AstTree.cs
- GenericParameterDataContract.cs
- SessionStateModule.cs
- MultiSelectRootGridEntry.cs
- DataServiceRequest.cs
- FieldToken.cs
- SqlGatherProducedAliases.cs
- BitmapCache.cs
- InfoCardRSAPKCS1SignatureFormatter.cs
- FixedPosition.cs
- AcceleratedTokenProviderState.cs
- ClientBuildManager.cs
- KeyboardNavigation.cs
- Exceptions.cs
- PerfCounterSection.cs
- SqlNotificationRequest.cs
- FixedLineResult.cs
- SoapProtocolImporter.cs
- CorePropertiesFilter.cs
- HtmlPageAdapter.cs
- DesignerSerializationOptionsAttribute.cs
- TimeSpanOrInfiniteConverter.cs
- Storyboard.cs
- BlockCollection.cs
- XmlElementAttribute.cs
- SrgsOneOf.cs
- __Error.cs
- HashCodeCombiner.cs
- StateItem.cs
- DefaultBindingPropertyAttribute.cs
- SystemTcpConnection.cs
- TimeStampChecker.cs
- SplitContainer.cs
- BindingNavigator.cs
- PermissionToken.cs
- NumericUpDownAccelerationCollection.cs
- CompiledRegexRunnerFactory.cs
- DefaultObjectMappingItemCollection.cs
- _TimerThread.cs
- HtmlEmptyTagControlBuilder.cs
- ArrayConverter.cs
- FontInfo.cs
- PageCatalogPart.cs
- MessageSmuggler.cs
- DataListItemEventArgs.cs
- CacheRequest.cs
- ScriptResourceMapping.cs
- SqlHelper.cs
- DbMetaDataCollectionNames.cs
- SoapFault.cs
- GeometryValueSerializer.cs
- TypeNameParser.cs
- ResourceAssociationSet.cs
- DrawingImage.cs
- SchemaImporterExtensionElement.cs
- PrintingPermissionAttribute.cs
- ViewBase.cs
- GAC.cs
- ConstrainedDataObject.cs
- BasicHttpMessageSecurity.cs
- DbProviderManifest.cs
- CodeDomLocalizationProvider.cs
- LayoutEngine.cs
- UnauthorizedWebPart.cs
- TypeConverter.cs
- Operators.cs
- AdvancedBindingPropertyDescriptor.cs
- TextServicesManager.cs
- ConvertersCollection.cs
- Compiler.cs
- IriParsingElement.cs
- XamlStyleSerializer.cs
- XamlSerializationHelper.cs
- TextTreeExtractElementUndoUnit.cs
- FontInfo.cs
- DependencyObjectProvider.cs
- ConnectorRouter.cs
- ZipIOLocalFileHeader.cs
- XmlName.cs
- ServiceErrorHandler.cs
- Renderer.cs