Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / xsp / System / Web / Configuration / HandlerFactoryCache.cs / 2 / HandlerFactoryCache.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- /* * Config related classes for HttpApplication */ namespace System.Web.Configuration { using System; using System.Configuration; using System.Web.Compilation; /* * An object to cache a factory */ internal class HandlerFactoryCache { private IHttpHandlerFactory _factory; internal HandlerFactoryCache(string type) { Object instance = Create(type); // make sure it is either handler or handler factory if (instance is IHttpHandler) { // create bogus factory around it _factory = new HandlerFactoryWrapper((IHttpHandler)instance, GetHandlerType(type)); } else if (instance is IHttpHandlerFactory) { _factory = (IHttpHandlerFactory)instance; } else { throw new HttpException(SR.GetString(SR.Type_not_factory_or_handler, instance.GetType().FullName)); } } internal HandlerFactoryCache(HttpHandlerAction mapping) { Object instance = mapping.Create(); // make sure it is either handler or handler factory if (instance is IHttpHandler) { // create bogus factory around it _factory = new HandlerFactoryWrapper((IHttpHandler)instance, GetHandlerType(mapping)); } else if (instance is IHttpHandlerFactory) { _factory = (IHttpHandlerFactory)instance; } else { throw new HttpException(SR.GetString(SR.Type_not_factory_or_handler, instance.GetType().FullName)); } } internal IHttpHandlerFactory Factory { get { return _factory; } } internal Type GetHandlerType( HttpHandlerAction handlerAction ) { // HACKHACK: for now, let uncreatable types through and error later (for .soap factory) // This design should change - developers will want to know immediately // when they misspell a type Type t = BuildManager.GetType(handlerAction.Type, true /*throwOnFail*/, false /*ignoreCase*/); // throw for bad types in deferred case if (!ConfigUtil.IsTypeHandlerOrFactory(t)) throw new ConfigurationErrorsException(SR.GetString(SR.Type_not_factory_or_handler, handlerAction.Type), handlerAction.ElementInformation.Source, handlerAction.ElementInformation.LineNumber); return t; } internal Type GetHandlerType(string type) { // HACKHACK: for now, let uncreatable types through and error later (for .soap factory) // This design should change - developers will want to know immediately // when they misspell a type Type t = BuildManager.GetType(type, true /*throwOnFail*/, false /*ignoreCase*/); HttpRuntime.FailIfNoAPTCABit(t, null, null); // throw for bad types in deferred case if (!ConfigUtil.IsTypeHandlerOrFactory(t)) throw new ConfigurationErrorsException(SR.GetString(SR.Type_not_factory_or_handler, type)); return t; } internal object Create(string type) { // HACKHACK: for now, let uncreatable types through and error later (for .soap factory) // This design should change - developers will want to know immediately // when they misspell a type return HttpRuntime.CreateNonPublicInstance(GetHandlerType(type)); } } }
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DbDeleteCommandTree.cs
- ActivityIdHeader.cs
- ProxyWebPartConnectionCollection.cs
- FlowDocumentPage.cs
- AuthStoreRoleProvider.cs
- TableRowGroup.cs
- EventSchemaTraceListener.cs
- LinkedResourceCollection.cs
- ItemsPanelTemplate.cs
- JsonFormatGeneratorStatics.cs
- ClientApiGenerator.cs
- XmlException.cs
- IgnoreSectionHandler.cs
- TemplateContentLoader.cs
- SmiContextFactory.cs
- DelegateTypeInfo.cs
- _Win32.cs
- LateBoundChannelParameterCollection.cs
- XmlExtensionFunction.cs
- ResourceDefaultValueAttribute.cs
- SecurityManager.cs
- DataBinder.cs
- SectionXmlInfo.cs
- ToolStripDesignerAvailabilityAttribute.cs
- ObjectCloneHelper.cs
- GraphicsState.cs
- XPathQueryGenerator.cs
- ReadOnlyObservableCollection.cs
- SecurityTokenException.cs
- BindingExpression.cs
- DataGridViewCellStyleChangedEventArgs.cs
- SqlErrorCollection.cs
- PlatformNotSupportedException.cs
- TimeSpanMinutesOrInfiniteConverter.cs
- TCPListener.cs
- ObjectDataSourceView.cs
- EntityClassGenerator.cs
- XPathPatternBuilder.cs
- SafeNativeMethods.cs
- ScriptManager.cs
- DataGridSortingEventArgs.cs
- LiteralSubsegment.cs
- OdbcConnection.cs
- NamespaceMapping.cs
- AnimationException.cs
- AuthorizationRule.cs
- smtppermission.cs
- SettingsPropertyValueCollection.cs
- VectorCollectionConverter.cs
- CodeLabeledStatement.cs
- SoapElementAttribute.cs
- Site.cs
- XPathNode.cs
- CopyOfAction.cs
- ScriptServiceAttribute.cs
- IndentedTextWriter.cs
- AllMembershipCondition.cs
- StringConcat.cs
- XmlSchemaComplexContent.cs
- Char.cs
- CommandField.cs
- RemoteWebConfigurationHostServer.cs
- ColumnResizeAdorner.cs
- DataContext.cs
- _ShellExpression.cs
- Attributes.cs
- SamlAuthenticationClaimResource.cs
- PagePropertiesChangingEventArgs.cs
- SmiContext.cs
- JournalEntry.cs
- GPPOINTF.cs
- ReadOnlyCollection.cs
- _SSPIWrapper.cs
- ByteRangeDownloader.cs
- XmlSecureResolver.cs
- NativeWindow.cs
- Rotation3DAnimationBase.cs
- XmlSiteMapProvider.cs
- AccessDataSource.cs
- IndexingContentUnit.cs
- ToolStripDropDownButton.cs
- updatecommandorderer.cs
- DispatcherOperation.cs
- StylusShape.cs
- FontConverter.cs
- RuleSettings.cs
- ReaderOutput.cs
- EditCommandColumn.cs
- ParserContext.cs
- Rotation3D.cs
- Context.cs
- _NestedMultipleAsyncResult.cs
- ISSmlParser.cs
- DefaultTextStoreTextComposition.cs
- NativeCppClassAttribute.cs
- DataBoundLiteralControl.cs
- sqlser.cs
- TimeZone.cs
- SystemIPInterfaceProperties.cs
- MessageQueueKey.cs