Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / fx / src / xsp / System / Web / Configuration / HandlerFactoryCache.cs / 1 / 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));
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// 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));
}
}
}
// 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
- Calendar.cs
- XmlILAnnotation.cs
- CompiledELinqQueryState.cs
- BamlRecords.cs
- RenderingBiasValidation.cs
- PointAnimation.cs
- recordstatescratchpad.cs
- DesignSurfaceManager.cs
- RequestStatusBarUpdateEventArgs.cs
- RelativeSource.cs
- PageResolution.cs
- EventDescriptorCollection.cs
- ObjectStateEntry.cs
- DataSourceHelper.cs
- MemberInfoSerializationHolder.cs
- CompositeScriptReferenceEventArgs.cs
- Context.cs
- TextProperties.cs
- CompilationRelaxations.cs
- ColumnResult.cs
- CmsInterop.cs
- Rijndael.cs
- _SecureChannel.cs
- XmlSchemaAnyAttribute.cs
- CodeSnippetTypeMember.cs
- graph.cs
- QilTernary.cs
- WrapperSecurityCommunicationObject.cs
- DataGridViewBand.cs
- LineMetrics.cs
- PromptEventArgs.cs
- LayoutDump.cs
- _NTAuthentication.cs
- XmlAttributeCache.cs
- JournalNavigationScope.cs
- ImageClickEventArgs.cs
- MatrixStack.cs
- IResourceProvider.cs
- SiteOfOriginContainer.cs
- DecimalAnimationUsingKeyFrames.cs
- PrintEvent.cs
- ConditionCollection.cs
- BinaryVersion.cs
- TTSVoice.cs
- AuthorizationSection.cs
- Socket.cs
- BrowserCapabilitiesCompiler.cs
- TypeConverterAttribute.cs
- KeySpline.cs
- ByteConverter.cs
- HttpConfigurationContext.cs
- GridViewRowEventArgs.cs
- EventHandlersDesigner.cs
- ServiceSecurityAuditBehavior.cs
- TreeNodeBinding.cs
- WebExceptionStatus.cs
- HttpResponseInternalWrapper.cs
- CodeDomSerializerBase.cs
- NameSpaceExtractor.cs
- Rule.cs
- SourceFileBuildProvider.cs
- EventWaitHandleSecurity.cs
- XXXInfos.cs
- MapPathBasedVirtualPathProvider.cs
- FullTextState.cs
- XmlComment.cs
- DetailsViewCommandEventArgs.cs
- DataSetMappper.cs
- ApplicationId.cs
- EventBuilder.cs
- DataFieldConverter.cs
- UrlAuthorizationModule.cs
- HelpInfo.cs
- InputQueue.cs
- PointHitTestResult.cs
- RoutedUICommand.cs
- WindowsListView.cs
- _AcceptOverlappedAsyncResult.cs
- LoginCancelEventArgs.cs
- LineGeometry.cs
- formatter.cs
- Point4DValueSerializer.cs
- DocumentReferenceCollection.cs
- Configuration.cs
- IConvertible.cs
- Utils.cs
- ChooseAction.cs
- ExtractedStateEntry.cs
- XmlNamespaceDeclarationsAttribute.cs
- IsolatedStorageFile.cs
- LongMinMaxAggregationOperator.cs
- TreeNodeConverter.cs
- SQLChars.cs
- EventLogPermissionAttribute.cs
- wmiprovider.cs
- TimeSpanConverter.cs
- CompilerCollection.cs
- TypeLibConverter.cs
- OracleColumn.cs
- HtmlEncodedRawTextWriter.cs