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
- SqlNodeTypeOperators.cs
- BamlTreeNode.cs
- SecureStringHasher.cs
- DataTableCollection.cs
- CollectionBuilder.cs
- Table.cs
- DateTimeConverter2.cs
- UrlMappingsSection.cs
- ExpressionDumper.cs
- DocumentPage.cs
- SerializationAttributes.cs
- StreamGeometryContext.cs
- ClusterSafeNativeMethods.cs
- ToolStripMenuItem.cs
- NullableDoubleSumAggregationOperator.cs
- RouteUrlExpressionBuilder.cs
- EventMappingSettingsCollection.cs
- Sql8ConformanceChecker.cs
- CodeSnippetStatement.cs
- BoundsDrawingContextWalker.cs
- InputChannel.cs
- XamlTreeBuilderBamlRecordWriter.cs
- WebPartCloseVerb.cs
- SessionStateUtil.cs
- SrgsSemanticInterpretationTag.cs
- CompositeFontInfo.cs
- Partitioner.cs
- ChangePassword.cs
- XmlSerializerFactory.cs
- ChannelServices.cs
- InternalBase.cs
- BulletDecorator.cs
- CachingHintValidation.cs
- clipboard.cs
- Timer.cs
- StreamInfo.cs
- Hyperlink.cs
- MemberAccessException.cs
- GridViewAutomationPeer.cs
- StorageScalarPropertyMapping.cs
- ExecutionProperties.cs
- XamlSerializationHelper.cs
- NetSectionGroup.cs
- DataSourceControl.cs
- StatusStrip.cs
- DES.cs
- IUnknownConstantAttribute.cs
- ItemAutomationPeer.cs
- FragmentQueryKB.cs
- DynamicResourceExtensionConverter.cs
- MemberDescriptor.cs
- TypeNameConverter.cs
- MouseEvent.cs
- ClockGroup.cs
- Model3D.cs
- SqlConnectionPoolGroupProviderInfo.cs
- RunClient.cs
- HTTPNotFoundHandler.cs
- SystemWebSectionGroup.cs
- MonitorWrapper.cs
- SqlNotificationRequest.cs
- StylusPointCollection.cs
- FillRuleValidation.cs
- RequiredAttributeAttribute.cs
- XmlTextAttribute.cs
- TextFormatterContext.cs
- QilInvokeEarlyBound.cs
- RunWorkerCompletedEventArgs.cs
- SqlClientWrapperSmiStream.cs
- X509ThumbprintKeyIdentifierClause.cs
- InvalidEnumArgumentException.cs
- UriSection.cs
- ElapsedEventArgs.cs
- GridViewCommandEventArgs.cs
- SettingsProviderCollection.cs
- Rect3D.cs
- CatalogPart.cs
- TypeValidationEventArgs.cs
- MissingMethodException.cs
- SoapMessage.cs
- XmlNodeWriter.cs
- ValidationPropertyAttribute.cs
- KeyGesture.cs
- TemplateField.cs
- PartialArray.cs
- ScriptingSectionGroup.cs
- FontFamily.cs
- SQLCharsStorage.cs
- Constants.cs
- RewritingProcessor.cs
- Odbc32.cs
- isolationinterop.cs
- ACL.cs
- ControlBindingsCollection.cs
- RelativeSource.cs
- TextRangeBase.cs
- base64Transforms.cs
- HttpMethodConstraint.cs
- ChineseLunisolarCalendar.cs
- TaskHelper.cs