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
- DragDrop.cs
- SoapMessage.cs
- ToggleProviderWrapper.cs
- SqlNodeTypeOperators.cs
- PostBackOptions.cs
- DrawingVisualDrawingContext.cs
- DataTableTypeConverter.cs
- DataGridCheckBoxColumn.cs
- OptimizedTemplateContentHelper.cs
- _OSSOCK.cs
- StylusLogic.cs
- SiteMembershipCondition.cs
- CqlWriter.cs
- SelectionPattern.cs
- PersonalizablePropertyEntry.cs
- WindowsRebar.cs
- MapPathBasedVirtualPathProvider.cs
- MemoryPressure.cs
- FontDialog.cs
- ZoneButton.cs
- WorkflowInstanceAbortedRecord.cs
- MaterialCollection.cs
- XmlUtf8RawTextWriter.cs
- QilName.cs
- ControlCollection.cs
- Table.cs
- HttpCachePolicy.cs
- ColorTransform.cs
- BinaryObjectReader.cs
- SelectorItemAutomationPeer.cs
- DaylightTime.cs
- FileVersionInfo.cs
- XmlQueryTypeFactory.cs
- ThousandthOfEmRealPoints.cs
- FixedDocument.cs
- StickyNoteAnnotations.cs
- FontSourceCollection.cs
- RuleConditionDialog.cs
- DataGridViewTextBoxColumn.cs
- selecteditemcollection.cs
- DbModificationClause.cs
- SystemIPGlobalProperties.cs
- ComEventsHelper.cs
- HasCopySemanticsAttribute.cs
- StylusDevice.cs
- ObjectPersistData.cs
- ExpandCollapsePattern.cs
- StatusBarPanelClickEvent.cs
- sortedlist.cs
- ClonableStack.cs
- DiscoveryDocumentSerializer.cs
- IDispatchConstantAttribute.cs
- StreamGeometryContext.cs
- EntitySetDataBindingList.cs
- SamlSecurityToken.cs
- CryptoApi.cs
- EntityContainerRelationshipSet.cs
- DefinitionUpdate.cs
- Win32KeyboardDevice.cs
- OleDbConnectionPoolGroupProviderInfo.cs
- MatrixStack.cs
- QuotedPrintableStream.cs
- RadioButtonList.cs
- ListDictionary.cs
- Padding.cs
- MemberPath.cs
- xmlsaver.cs
- BlobPersonalizationState.cs
- SqlDataSourceEnumerator.cs
- EditCommandColumn.cs
- baseaxisquery.cs
- ItemsPresenter.cs
- DecoderExceptionFallback.cs
- PerformanceCounterPermissionAttribute.cs
- DataGridTable.cs
- Mutex.cs
- Matrix3D.cs
- TextEditorCopyPaste.cs
- PerformanceCounterPermissionEntryCollection.cs
- EntityContainerRelationshipSet.cs
- UITypeEditor.cs
- InvalidDataException.cs
- OleDbWrapper.cs
- GridItem.cs
- HtmlElement.cs
- ValidationSummary.cs
- XappLauncher.cs
- CrossAppDomainChannel.cs
- NumericUpDownAccelerationCollection.cs
- TextServicesDisplayAttribute.cs
- NeedSkipTokenVisitor.cs
- CodeTypeDeclaration.cs
- SolidBrush.cs
- CqlErrorHelper.cs
- SerializableAttribute.cs
- ReceiveActivityValidator.cs
- RequestValidator.cs
- XamlFilter.cs
- ByteStreamMessageUtility.cs
- EventLogPermissionEntryCollection.cs