Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / DEVDIV / depot / DevDiv / releases / whidbey / QFE / ndp / fx / src / xsp / System / Web / Hosting / SimpleApplicationHost.cs / 3 / SimpleApplicationHost.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.Hosting {
using System;
using System.Collections;
using System.Configuration;
using System.Diagnostics;
using System.Globalization;
using System.Runtime.InteropServices;
using System.Security.Permissions;
using System.Web;
using System.Web.Configuration;
using System.Web.UI;
using System.Web.Util;
using Microsoft.Win32;
using Debug = System.Web.Util.Debug;
internal class SimpleApplicationHost : MarshalByRefObject, IApplicationHost {
private VirtualPath _appVirtualPath;
private String _appPhysicalPath;
internal SimpleApplicationHost(VirtualPath virtualPath, string physicalPath) {
if (String.IsNullOrEmpty(physicalPath))
throw ExceptionUtil.ParameterNullOrEmpty("physicalPath");
// Throw if the physical path is not canonical, to prevent potential
// security issues (
if (FileUtil.IsSuspiciousPhysicalPath(physicalPath)) {
throw ExceptionUtil.ParameterInvalid(physicalPath);
}
_appVirtualPath = virtualPath;
_appPhysicalPath = StringUtil.StringEndsWith(physicalPath, "\\") ? physicalPath : physicalPath + "\\";
}
public override Object InitializeLifetimeService() {
return null; // never expire lease
}
// IApplicationHost implementation
public string GetVirtualPath() {
return _appVirtualPath.VirtualPathString;
}
String IApplicationHost.GetPhysicalPath() {
return _appPhysicalPath;
}
IConfigMapPathFactory IApplicationHost.GetConfigMapPathFactory() {
return new SimpleConfigMapPathFactory();
}
IntPtr IApplicationHost.GetConfigToken() {
return IntPtr.Zero;
}
String IApplicationHost.GetSiteName() {
return WebConfigurationHost.DefaultSiteName;
}
String IApplicationHost.GetSiteID() {
return WebConfigurationHost.DefaultSiteID;
}
public void MessageReceived() {
// nothing
}
}
[Serializable()]
internal class SimpleConfigMapPathFactory : IConfigMapPathFactory {
IConfigMapPath IConfigMapPathFactory.Create(string virtualPath, string physicalPath) {
WebConfigurationFileMap webFileMap = new WebConfigurationFileMap();
VirtualPath vpath = VirtualPath.Create(virtualPath);
// Application path
webFileMap.VirtualDirectories.Add(vpath.VirtualPathStringNoTrailingSlash,
new VirtualDirectoryMapping(physicalPath, true));
// Client script file path
webFileMap.VirtualDirectories.Add(
HttpRuntime.AspClientScriptVirtualPath,
new VirtualDirectoryMapping(HttpRuntime.AspClientScriptPhysicalPathInternal, false));
return new UserMapPath(webFileMap);
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.Hosting {
using System;
using System.Collections;
using System.Configuration;
using System.Diagnostics;
using System.Globalization;
using System.Runtime.InteropServices;
using System.Security.Permissions;
using System.Web;
using System.Web.Configuration;
using System.Web.UI;
using System.Web.Util;
using Microsoft.Win32;
using Debug = System.Web.Util.Debug;
internal class SimpleApplicationHost : MarshalByRefObject, IApplicationHost {
private VirtualPath _appVirtualPath;
private String _appPhysicalPath;
internal SimpleApplicationHost(VirtualPath virtualPath, string physicalPath) {
if (String.IsNullOrEmpty(physicalPath))
throw ExceptionUtil.ParameterNullOrEmpty("physicalPath");
// Throw if the physical path is not canonical, to prevent potential
// security issues (
if (FileUtil.IsSuspiciousPhysicalPath(physicalPath)) {
throw ExceptionUtil.ParameterInvalid(physicalPath);
}
_appVirtualPath = virtualPath;
_appPhysicalPath = StringUtil.StringEndsWith(physicalPath, "\\") ? physicalPath : physicalPath + "\\";
}
public override Object InitializeLifetimeService() {
return null; // never expire lease
}
// IApplicationHost implementation
public string GetVirtualPath() {
return _appVirtualPath.VirtualPathString;
}
String IApplicationHost.GetPhysicalPath() {
return _appPhysicalPath;
}
IConfigMapPathFactory IApplicationHost.GetConfigMapPathFactory() {
return new SimpleConfigMapPathFactory();
}
IntPtr IApplicationHost.GetConfigToken() {
return IntPtr.Zero;
}
String IApplicationHost.GetSiteName() {
return WebConfigurationHost.DefaultSiteName;
}
String IApplicationHost.GetSiteID() {
return WebConfigurationHost.DefaultSiteID;
}
public void MessageReceived() {
// nothing
}
}
[Serializable()]
internal class SimpleConfigMapPathFactory : IConfigMapPathFactory {
IConfigMapPath IConfigMapPathFactory.Create(string virtualPath, string physicalPath) {
WebConfigurationFileMap webFileMap = new WebConfigurationFileMap();
VirtualPath vpath = VirtualPath.Create(virtualPath);
// Application path
webFileMap.VirtualDirectories.Add(vpath.VirtualPathStringNoTrailingSlash,
new VirtualDirectoryMapping(physicalPath, true));
// Client script file path
webFileMap.VirtualDirectories.Add(
HttpRuntime.AspClientScriptVirtualPath,
new VirtualDirectoryMapping(HttpRuntime.AspClientScriptPhysicalPathInternal, false));
return new UserMapPath(webFileMap);
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DataGridItemEventArgs.cs
- DescendantOverDescendantQuery.cs
- Literal.cs
- JumpList.cs
- StaticExtension.cs
- VirtualDirectoryMapping.cs
- InheritanceContextHelper.cs
- WorkflowServiceHost.cs
- XsltFunctions.cs
- TreeNodeBindingCollection.cs
- FormViewPageEventArgs.cs
- Matrix.cs
- TagMapInfo.cs
- ListViewVirtualItemsSelectionRangeChangedEvent.cs
- HtmlTableRowCollection.cs
- AssemblyBuilderData.cs
- TimelineGroup.cs
- elementinformation.cs
- NetTcpBindingCollectionElement.cs
- CorrelationHandle.cs
- XmlDomTextWriter.cs
- Gdiplus.cs
- DesignerCommandAdapter.cs
- Debug.cs
- InputBinder.cs
- figurelengthconverter.cs
- DockingAttribute.cs
- OutgoingWebRequestContext.cs
- TextBoxBase.cs
- Quad.cs
- ToolBarOverflowPanel.cs
- BuilderPropertyEntry.cs
- objectresult_tresulttype.cs
- ReadOnlyTernaryTree.cs
- TextSelection.cs
- LoginStatusDesigner.cs
- XamlBrushSerializer.cs
- CallContext.cs
- ClientUrlResolverWrapper.cs
- TagMapCollection.cs
- GridViewColumn.cs
- ConsoleKeyInfo.cs
- SQLDateTimeStorage.cs
- ListDictionary.cs
- RawStylusInputCustomData.cs
- XPathQilFactory.cs
- BufferBuilder.cs
- XappLauncher.cs
- WebPartZoneBase.cs
- ValueProviderWrapper.cs
- _HelperAsyncResults.cs
- _NativeSSPI.cs
- DesignOnlyAttribute.cs
- IgnoreSection.cs
- SystemGatewayIPAddressInformation.cs
- OpenTypeMethods.cs
- SecurityProtocolFactory.cs
- ThemeDictionaryExtension.cs
- SetStoryboardSpeedRatio.cs
- InteropBitmapSource.cs
- Set.cs
- RangeValuePatternIdentifiers.cs
- DesignerSerializationOptionsAttribute.cs
- Socket.cs
- ObjectTypeMapping.cs
- ListViewVirtualItemsSelectionRangeChangedEvent.cs
- MenuAutomationPeer.cs
- LogWriteRestartAreaAsyncResult.cs
- ChildChangedEventArgs.cs
- ProxyHwnd.cs
- XmlStreamNodeWriter.cs
- ObjectListItemCollection.cs
- TraceShell.cs
- SatelliteContractVersionAttribute.cs
- MessageLogger.cs
- versioninfo.cs
- messageonlyhwndwrapper.cs
- OracleString.cs
- RijndaelManagedTransform.cs
- ContextProperty.cs
- GenericQueueSurrogate.cs
- PathTooLongException.cs
- BadImageFormatException.cs
- DataComponentNameHandler.cs
- EntityContainerEmitter.cs
- XMLSyntaxException.cs
- StatusBarItem.cs
- SafeSystemMetrics.cs
- SecurityDescriptor.cs
- StructuredType.cs
- GregorianCalendarHelper.cs
- UnauthorizedWebPart.cs
- DataKey.cs
- CapacityStreamGeometryContext.cs
- PathTooLongException.cs
- XmlText.cs
- UIPropertyMetadata.cs
- BypassElementCollection.cs
- GPPOINT.cs
- EnumConverter.cs