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
- DoubleAverageAggregationOperator.cs
- DbParameterCollection.cs
- PageAsyncTaskManager.cs
- XmlnsDefinitionAttribute.cs
- InvokeMethod.cs
- CompensationHandlingFilter.cs
- TextAnchor.cs
- InvariantComparer.cs
- Walker.cs
- LOSFormatter.cs
- UnionQueryOperator.cs
- ReturnType.cs
- EFColumnProvider.cs
- RegisteredExpandoAttribute.cs
- GradientSpreadMethodValidation.cs
- Geometry3D.cs
- KnownTypes.cs
- Transform3DCollection.cs
- TextWriter.cs
- EdmProviderManifest.cs
- GenericWebPart.cs
- ListParagraph.cs
- GeneralTransformGroup.cs
- PropertyDescriptorCollection.cs
- JulianCalendar.cs
- LookupBindingPropertiesAttribute.cs
- BitmapEffectInputConnector.cs
- HtmlInputButton.cs
- PeerTransportListenAddressValidator.cs
- XmlAttributeAttribute.cs
- CDSCollectionETWBCLProvider.cs
- wgx_render.cs
- RequestNavigateEventArgs.cs
- IisTraceListener.cs
- SchemaAttDef.cs
- PolyQuadraticBezierSegment.cs
- Mutex.cs
- FragmentQueryProcessor.cs
- CurrentTimeZone.cs
- ClientRuntimeConfig.cs
- indexingfiltermarshaler.cs
- CfgSemanticTag.cs
- DocumentViewer.cs
- UrlUtility.cs
- GetIsBrowserClientRequest.cs
- BuildProviderAppliesToAttribute.cs
- BindingList.cs
- FileChangeNotifier.cs
- CustomErrorCollection.cs
- Rule.cs
- SmiXetterAccessMap.cs
- RuleRef.cs
- TextServicesManager.cs
- WebPartConnection.cs
- objectquery_tresulttype.cs
- Size.cs
- DataRelationPropertyDescriptor.cs
- DetailsViewPageEventArgs.cs
- UnsafeNativeMethodsTablet.cs
- XPathNodeHelper.cs
- TimeStampChecker.cs
- ActiveXContainer.cs
- RefreshPropertiesAttribute.cs
- MetafileHeaderWmf.cs
- DateTimeFormatInfo.cs
- SessionPageStatePersister.cs
- PostBackTrigger.cs
- EasingKeyFrames.cs
- JournalNavigationScope.cs
- TextServicesCompartmentContext.cs
- EdmFunction.cs
- PointAnimation.cs
- _CommandStream.cs
- HandlerWithFactory.cs
- SqlCommandBuilder.cs
- OleDbWrapper.cs
- EncoderParameter.cs
- WebPartCatalogAddVerb.cs
- GraphicsContainer.cs
- NTAccount.cs
- XAMLParseException.cs
- UInt32.cs
- sqlser.cs
- WindowsNonControl.cs
- CodeMemberMethod.cs
- XmlCollation.cs
- FastPropertyAccessor.cs
- RequestCacheEntry.cs
- ExpandSegmentCollection.cs
- FixedMaxHeap.cs
- RightsManagementManager.cs
- ConnectionInterfaceCollection.cs
- ExceptionTrace.cs
- HtmlTableCellCollection.cs
- Geometry.cs
- DataControlImageButton.cs
- InputMethodStateChangeEventArgs.cs
- Int32.cs
- InvocationExpression.cs
- TypeInitializationException.cs