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
- DataGridLengthConverter.cs
- WebContentFormatHelper.cs
- FileLevelControlBuilderAttribute.cs
- ComponentSerializationService.cs
- ToolStripDropDownClosingEventArgs.cs
- RepeatButtonAutomationPeer.cs
- ProfilePropertySettings.cs
- ItemCollection.cs
- cache.cs
- DefaultSection.cs
- GZipDecoder.cs
- NullNotAllowedCollection.cs
- FactoryGenerator.cs
- SingleSelectRootGridEntry.cs
- InstanceCreationEditor.cs
- MobileControlDesigner.cs
- ObjectListShowCommandsEventArgs.cs
- BlurBitmapEffect.cs
- ResolvedKeyFrameEntry.cs
- ModifyActivitiesPropertyDescriptor.cs
- OperationCanceledException.cs
- DataGridViewCellToolTipTextNeededEventArgs.cs
- CodeTypeReferenceSerializer.cs
- ProtocolsConfigurationEntry.cs
- SqlCommandSet.cs
- GlobalizationAssembly.cs
- DatatypeImplementation.cs
- TextPointerBase.cs
- Mapping.cs
- DialogResultConverter.cs
- DataGridViewLayoutData.cs
- TransformValueSerializer.cs
- RangeBaseAutomationPeer.cs
- Padding.cs
- X509Utils.cs
- DecimalKeyFrameCollection.cs
- FileDetails.cs
- MarshalByRefObject.cs
- DynamicResourceExtensionConverter.cs
- SmiRequestExecutor.cs
- DockAndAnchorLayout.cs
- NetStream.cs
- ConfigurationLockCollection.cs
- StackBuilderSink.cs
- RenderContext.cs
- ToolboxItemFilterAttribute.cs
- FSWPathEditor.cs
- DBNull.cs
- ActiveXMessageFormatter.cs
- GACIdentityPermission.cs
- ProjectionAnalyzer.cs
- ResourceType.cs
- ServiceContractAttribute.cs
- ThreadPoolTaskScheduler.cs
- DebugInfoGenerator.cs
- __ComObject.cs
- DataGridViewRowEventArgs.cs
- Control.cs
- _SSPISessionCache.cs
- MatchingStyle.cs
- GenericsNotImplementedException.cs
- StreamResourceInfo.cs
- TerminatorSinks.cs
- XNodeValidator.cs
- BaseTemplateBuildProvider.cs
- DbException.cs
- UnauthorizedWebPart.cs
- InvalidateEvent.cs
- BuilderInfo.cs
- DataListItem.cs
- GeneralTransform3D.cs
- SmiRequestExecutor.cs
- InternalException.cs
- EmptyControlCollection.cs
- KnownTypes.cs
- ClientTargetCollection.cs
- HasCopySemanticsAttribute.cs
- SmtpReplyReaderFactory.cs
- FormatConvertedBitmap.cs
- PageCodeDomTreeGenerator.cs
- GenericIdentity.cs
- Line.cs
- WpfSharedBamlSchemaContext.cs
- MethodExpr.cs
- DataServices.cs
- InkPresenterAutomationPeer.cs
- CompilerCollection.cs
- Quaternion.cs
- StateMachineAction.cs
- MarkerProperties.cs
- ArgumentOutOfRangeException.cs
- StrokeNodeEnumerator.cs
- FixedTextContainer.cs
- MessageProtectionOrder.cs
- StreamSecurityUpgradeInitiator.cs
- IntegerFacetDescriptionElement.cs
- StringConcat.cs
- AssemblyEvidenceFactory.cs
- TeredoHelper.cs
- DbParameterCollection.cs