Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Web / Configuration / ProcessHostConfigUtils.cs / 1305376 / 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
- CfgParser.cs
- WebPartConnectionsCancelEventArgs.cs
- UserThread.cs
- ObjectStateManager.cs
- TTSEngineProxy.cs
- ContainerUtilities.cs
- DragStartedEventArgs.cs
- Int32Animation.cs
- HtmlElementErrorEventArgs.cs
- ResponseStream.cs
- XmlDataCollection.cs
- Int32RectValueSerializer.cs
- ActivityBindForm.cs
- BindingExpressionUncommonField.cs
- BindingExpressionBase.cs
- CompositeControl.cs
- GraphicsPath.cs
- PointF.cs
- ControlIdConverter.cs
- ProfileService.cs
- RowVisual.cs
- BlockingCollection.cs
- XmlWellformedWriter.cs
- HitTestParameters3D.cs
- ProcessHostConfigUtils.cs
- BitmapMetadataBlob.cs
- WebPartDisplayModeEventArgs.cs
- ModelTreeEnumerator.cs
- TargetControlTypeCache.cs
- ResourceKey.cs
- CodeDesigner.cs
- _BufferOffsetSize.cs
- FormsAuthenticationUser.cs
- RepeaterItem.cs
- WrapPanel.cs
- Point3D.cs
- Int32Converter.cs
- COM2ExtendedTypeConverter.cs
- TypeToArgumentTypeConverter.cs
- PixelShader.cs
- CodeDomDecompiler.cs
- SmtpClient.cs
- InputBindingCollection.cs
- NodeFunctions.cs
- XmlArrayItemAttributes.cs
- FixedTextPointer.cs
- SiteOfOriginPart.cs
- ObjectListFieldsPage.cs
- EdmItemError.cs
- CompressionTracing.cs
- ListMarkerSourceInfo.cs
- ThemeDirectoryCompiler.cs
- LoginUtil.cs
- FileSystemEventArgs.cs
- HiddenFieldPageStatePersister.cs
- WebConfigurationManager.cs
- DataBindingExpressionBuilder.cs
- DataServiceQueryException.cs
- ValidationRule.cs
- TraceContext.cs
- Document.cs
- Switch.cs
- BuildProvider.cs
- EmptyStringExpandableObjectConverter.cs
- GatewayIPAddressInformationCollection.cs
- Line.cs
- QuaternionAnimation.cs
- ConfigurationManagerInternalFactory.cs
- CellParagraph.cs
- ChannelFactory.cs
- DataBoundControlHelper.cs
- ConvertEvent.cs
- HostProtectionPermission.cs
- CompiledELinqQueryState.cs
- DeviceFilterEditorDialog.cs
- CustomWebEventKey.cs
- PropertyChangedEventArgs.cs
- XmlMtomReader.cs
- XmlDataSourceView.cs
- KeyConverter.cs
- HttpCookie.cs
- XmlTextAttribute.cs
- SafeTokenHandle.cs
- DataException.cs
- SafeRightsManagementQueryHandle.cs
- SHA256CryptoServiceProvider.cs
- RotationValidation.cs
- ClientSection.cs
- ErrorLog.cs
- QilLiteral.cs
- DragDropHelper.cs
- ToolStripItem.cs
- SqlCommandBuilder.cs
- PrinterSettings.cs
- XmlValidatingReaderImpl.cs
- ValueProviderWrapper.cs
- FormsAuthenticationUserCollection.cs
- WindowsFont.cs
- LinqDataSourceUpdateEventArgs.cs
- FontEmbeddingManager.cs