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
- SymbolEqualComparer.cs
- MarkupCompiler.cs
- TextTrailingCharacterEllipsis.cs
- DataServiceRequestArgs.cs
- LambdaCompiler.Unary.cs
- Dynamic.cs
- ContainerFilterService.cs
- DoubleLink.cs
- GregorianCalendarHelper.cs
- SourceFileInfo.cs
- ToolTip.cs
- InternalConfigHost.cs
- LinkUtilities.cs
- EmbeddedMailObject.cs
- SplineQuaternionKeyFrame.cs
- StylusPointPropertyId.cs
- UriSectionData.cs
- WorkflowClientDeliverMessageWrapper.cs
- DataGridViewTextBoxColumn.cs
- DbParameterCollection.cs
- DataGridTablesFactory.cs
- StringComparer.cs
- Rect.cs
- RouteParameter.cs
- InvalidComObjectException.cs
- StylusPointPropertyId.cs
- TypedReference.cs
- SettingsProperty.cs
- DbParameterHelper.cs
- SmtpReplyReaderFactory.cs
- CTreeGenerator.cs
- CellRelation.cs
- SerializerWriterEventHandlers.cs
- WpfSharedXamlSchemaContext.cs
- DataStreams.cs
- PopupRootAutomationPeer.cs
- IsolatedStorageFile.cs
- CatalogPartChrome.cs
- ArgumentFixer.cs
- RtfControls.cs
- DbDataSourceEnumerator.cs
- MenuItemCollection.cs
- ComponentConverter.cs
- GrammarBuilder.cs
- ClientProxyGenerator.cs
- BindingMAnagerBase.cs
- IEnumerable.cs
- DataGridViewCellMouseEventArgs.cs
- ChangeProcessor.cs
- AsymmetricKeyExchangeFormatter.cs
- MenuItemBindingCollection.cs
- LocalizableResourceBuilder.cs
- CacheEntry.cs
- ThreadExceptionEvent.cs
- TrackingMemoryStreamFactory.cs
- DataGridViewDataErrorEventArgs.cs
- CompositeDataBoundControl.cs
- TextureBrush.cs
- WebPartConnectionsDisconnectVerb.cs
- ColorConvertedBitmap.cs
- DataSourceUtil.cs
- SessionPageStatePersister.cs
- ActivityExecutionContext.cs
- CqlGenerator.cs
- RegexNode.cs
- EditingScope.cs
- WSSecurityOneDotOneSendSecurityHeader.cs
- CursorConverter.cs
- ExceptionRoutedEventArgs.cs
- LowerCaseStringConverter.cs
- PlatformNotSupportedException.cs
- GuidConverter.cs
- TrustLevel.cs
- Nullable.cs
- TableCellCollection.cs
- KeyConverter.cs
- AccessControlEntry.cs
- _NetworkingPerfCounters.cs
- SectionXmlInfo.cs
- UnicastIPAddressInformationCollection.cs
- ChannelSinkStacks.cs
- EdmTypeAttribute.cs
- BindingEntityInfo.cs
- SafeFileMappingHandle.cs
- XdrBuilder.cs
- RenderingBiasValidation.cs
- BamlResourceSerializer.cs
- OpacityConverter.cs
- SchemaImporterExtension.cs
- EntityDataSourceContextCreatingEventArgs.cs
- ArrayElementGridEntry.cs
- Documentation.cs
- WebPartTransformer.cs
- followingquery.cs
- WebPartConnectionsCloseVerb.cs
- TableItemPatternIdentifiers.cs
- sqlcontext.cs
- ChangeBlockUndoRecord.cs
- EmptyElement.cs
- DocumentPaginator.cs