Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Web / Hosting / AppDomainFactory.cs / 1305376 / AppDomainFactory.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- /* * AppDomain factory -- creates app domains on demand from ISAPI * * Copyright (c) 1999 Microsoft Corporation */ namespace System.Web.Hosting { using System.Collections; using System.Globalization; using System.Reflection; using System.Runtime.InteropServices; using System.Runtime.Remoting; using System.Security; using System.Security.Permissions; using System.Security.Policy; using System.Text; using System.Web; using System.Web.Util; // // IAppDomainFactory / AppDomainFactory are obsolete and stay public // only to avoid breaking changes. // // The new code uses IAppManagerAppDomainFactory / AppAppManagerDomainFactory // ///[ComImport, Guid("e6e21054-a7dc-4378-877d-b7f4a2d7e8ba"), System.Runtime.InteropServices.InterfaceTypeAttribute(System.Runtime.InteropServices.ComInterfaceType.InterfaceIsIUnknown)] public interface IAppDomainFactory { #if !FEATURE_PAL // FEATURE_PAL does not enable COM [return: MarshalAs(UnmanagedType.Interface)] Object Create( [In, MarshalAs(UnmanagedType.BStr)] String module, [In, MarshalAs(UnmanagedType.BStr)] String typeName, [In, MarshalAs(UnmanagedType.BStr)] String appId, [In, MarshalAs(UnmanagedType.BStr)] String appPath, [In, MarshalAs(UnmanagedType.BStr)] String strUrlOfAppOrigin, [In, MarshalAs(UnmanagedType.I4)] int iZone); #else // !FEATURE_PAL [return: MarshalAs(UnmanagedType.Error)] Object Create( [In, MarshalAs(UnmanagedType.Error)] String module, [In, MarshalAs(UnmanagedType.Error)] String typeName, [In, MarshalAs(UnmanagedType.Error)] String appId, [In, MarshalAs(UnmanagedType.Error)] String appPath, [In, MarshalAs(UnmanagedType.Error)] String strUrlOfAppOrigin, [In, MarshalAs(UnmanagedType.I4)] int iZone); #endif // FEATURE_PAL } /// /// ///[To be supplied.] ///public sealed class AppDomainFactory : IAppDomainFactory { private AppManagerAppDomainFactory _realFactory; [SecurityPermission(SecurityAction.Demand, Unrestricted=true)] public AppDomainFactory() { _realFactory = new AppManagerAppDomainFactory(); } /* * Creates an app domain with an object inside */ #if !FEATURE_PAL // FEATURE_PAL does not enable COM [return: MarshalAs(UnmanagedType.Interface)] #endif // !FEATURE_PAL public Object Create(String module, String typeName, String appId, String appPath, String strUrlOfAppOrigin, int iZone) { return _realFactory.Create(appId, appPath); } } // // The new code -- IAppManagerAppDomainFactory / AppAppManagerDomainFactory // /// [ComImport, Guid("02998279-7175-4d59-aa5a-fb8e44d4ca9d"), System.Runtime.InteropServices.InterfaceTypeAttribute(System.Runtime.InteropServices.ComInterfaceType.InterfaceIsIUnknown)] public interface IAppManagerAppDomainFactory { #if !FEATURE_PAL // FEATURE_PAL does not enable COM [return: MarshalAs(UnmanagedType.Interface)] #else // !FEATURE_PAL Object Create(String appId, String appPath); #endif // !FEATURE_PAL Object Create([In, MarshalAs(UnmanagedType.BStr)] String appId, [In, MarshalAs(UnmanagedType.BStr)] String appPath); void Stop(); } /// public sealed class AppManagerAppDomainFactory : IAppManagerAppDomainFactory { private ApplicationManager _appManager; [SecurityPermission(SecurityAction.Demand, Unrestricted=true)] public AppManagerAppDomainFactory() { _appManager = ApplicationManager.GetApplicationManager(); _appManager.Open(); } /* * Creates an app domain with an object inside */ #if FEATURE_PAL // FEATURE_PAL does not enable COM [return: MarshalAs(UnmanagedType.Error)] #else // FEATURE_PAL [return: MarshalAs(UnmanagedType.Interface)] #endif // FEATURE_PAL public Object Create(String appId, String appPath) { try { // // Fill app a Dictionary with 'binding rules' -- name value string pairs // for app domain creation // // if (appPath[0] == '.') { System.IO.FileInfo file = new System.IO.FileInfo(appPath); appPath = file.FullName; } if (!StringUtil.StringEndsWith(appPath, '\\')) { appPath = appPath + "\\"; } // Create new app domain via App Manager #if FEATURE_PAL // FEATURE_PAL does not enable IIS-based hosting features throw new NotImplementedException("ROTORTODO"); #else // FEATURE_PAL ISAPIApplicationHost appHost = new ISAPIApplicationHost(appId, appPath, false /*validatePhysicalPath*/); ISAPIRuntime isapiRuntime = (ISAPIRuntime)_appManager.CreateObjectInternal(appId, typeof(ISAPIRuntime), appHost, false /*failIfExists*/, null /*hostingParameters*/); isapiRuntime.StartProcessing(); return new ObjectHandle(isapiRuntime); #endif // FEATURE_PAL } catch (Exception e) { Debug.Trace("internal", "AppDomainFactory::Create failed with " + e.GetType().FullName + ": " + e.Message + "\r\n" + e.StackTrace); throw; } } public void Stop() { // wait for all app domains to go away _appManager.Close(); } internal static String ConstructSimpleAppName(string virtPath) { if (virtPath.Length <= 1) // root? return "root"; else return virtPath.Substring(1).ToLower(CultureInfo.InvariantCulture).Replace('/', '_'); } } } // 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
- CustomWebEventKey.cs
- DataGridViewComboBoxEditingControl.cs
- DebugInfoExpression.cs
- TraceInternal.cs
- ServiceOperationParameter.cs
- CacheHelper.cs
- ValueSerializer.cs
- DataTableTypeConverter.cs
- WindowsTokenRoleProvider.cs
- IdentityManager.cs
- TextWriterTraceListener.cs
- FunctionUpdateCommand.cs
- BeginStoryboard.cs
- XamlStyleSerializer.cs
- WeakEventManager.cs
- PageThemeBuildProvider.cs
- DataSetFieldSchema.cs
- CodeMemberField.cs
- BufferedGenericXmlSecurityToken.cs
- StringValidatorAttribute.cs
- ImageMap.cs
- Size3DConverter.cs
- NativeCompoundFileAPIs.cs
- SecurityKeyIdentifier.cs
- EntityContainerRelationshipSet.cs
- OdbcConnectionHandle.cs
- DeploymentExceptionMapper.cs
- DelegateInArgument.cs
- ModelVisual3D.cs
- Point4DConverter.cs
- XmlSchemaSimpleContentExtension.cs
- XmlRawWriterWrapper.cs
- LocationUpdates.cs
- Page.cs
- EntityDataSourceWrapper.cs
- TcpTransportSecurityElement.cs
- DecimalKeyFrameCollection.cs
- DecimalConverter.cs
- LambdaExpression.cs
- WindowsFormsSectionHandler.cs
- ProxyElement.cs
- LazyTextWriterCreator.cs
- AtomMaterializer.cs
- WebExceptionStatus.cs
- GridLength.cs
- VectorAnimation.cs
- RunClient.cs
- ZipIOExtraField.cs
- FixedFindEngine.cs
- IteratorFilter.cs
- AudioBase.cs
- CaseInsensitiveHashCodeProvider.cs
- FontDifferentiator.cs
- TypeName.cs
- CodeCommentStatementCollection.cs
- Attributes.cs
- ListBindableAttribute.cs
- DesignTimeXamlWriter.cs
- DrawListViewColumnHeaderEventArgs.cs
- EntityCommandDefinition.cs
- AlternateView.cs
- OptimizerPatterns.cs
- ItemsControlAutomationPeer.cs
- EditorPartCollection.cs
- InvokePattern.cs
- Control.cs
- PerformanceCounterPermissionEntry.cs
- DbException.cs
- AnimatedTypeHelpers.cs
- EntityAdapter.cs
- recordstatescratchpad.cs
- SecUtil.cs
- CriticalHandle.cs
- x509store.cs
- unsafeIndexingFilterStream.cs
- OutputWindow.cs
- FactoryId.cs
- SafeSystemMetrics.cs
- RowSpanVector.cs
- DrawTreeNodeEventArgs.cs
- ListItemCollection.cs
- TcpTransportSecurityElement.cs
- BinarySerializer.cs
- VisualTreeHelper.cs
- XmlIlVisitor.cs
- WindowsRichEditRange.cs
- ClientRolePrincipal.cs
- Msmq.cs
- SystemInfo.cs
- dataprotectionpermissionattribute.cs
- TriState.cs
- XmlSerializationReader.cs
- RectangleHotSpot.cs
- WindowsNonControl.cs
- EntityDataSourceDesignerHelper.cs
- CultureSpecificStringDictionary.cs
- DataGridViewCellConverter.cs
- SymbolEqualComparer.cs
- SqlUnionizer.cs
- OdbcConnectionHandle.cs