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 / HttpHandlerAction.cs / 1 / HttpHandlerAction.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.Configuration {
using System;
using System.Xml;
using System.Configuration;
using System.Collections.Specialized;
using System.Collections;
using System.IO;
using System.Text;
using System.Web.Util;
using System.Web.Compilation;
using System.Globalization;
using System.Security.Permissions;
[AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)]
public sealed class HttpHandlerAction : ConfigurationElement {
private static ConfigurationPropertyCollection _properties;
private static readonly ConfigurationProperty _propPath =
new ConfigurationProperty("path",
typeof(string),
null,
null,
StdValidatorsAndConverters.NonEmptyStringValidator,
ConfigurationPropertyOptions.IsRequired | ConfigurationPropertyOptions.IsKey);
private static readonly ConfigurationProperty _propVerb =
new ConfigurationProperty("verb",
typeof(string),
null,
null,
StdValidatorsAndConverters.NonEmptyStringValidator,
ConfigurationPropertyOptions.IsRequired | ConfigurationPropertyOptions.IsKey);
private static readonly ConfigurationProperty _propType =
new ConfigurationProperty("type",
typeof(string),
null,
null,
StdValidatorsAndConverters.NonEmptyStringValidator,
ConfigurationPropertyOptions.IsRequired);
private static readonly ConfigurationProperty _propValidate =
new ConfigurationProperty("validate",
typeof(bool),
true,
ConfigurationPropertyOptions.None);
private Wildcard _requestType;
private WildcardUrl _path;
private Type _type;
private string typeCache = null;
static HttpHandlerAction() {
_properties = new ConfigurationPropertyCollection();
_properties.Add(_propPath);
_properties.Add(_propVerb);
_properties.Add(_propType);
_properties.Add(_propValidate);
}
public HttpHandlerAction(String path, String type, String verb)
: this(path, type, verb, true) {
}
public HttpHandlerAction(String path, String type, String verb, bool validate) {
Path = path;
Type = type;
Verb = verb;
Validate = validate;
}
internal HttpHandlerAction() {
}
internal string Key {
get {
return "verb=" + Verb + " | path=" + Path;
}
}
protected override ConfigurationPropertyCollection Properties {
get {
return _properties;
}
}
[ConfigurationProperty("path", IsRequired = true, IsKey = true)]
public string Path {
get {
return (string)base[_propPath];
}
set {
base[_propPath] = value;
}
}
[ConfigurationProperty("verb", IsRequired = true, IsKey = true)]
public string Verb {
get {
return (string)base[_propVerb];
}
set {
base[_propVerb] = value;
}
}
[ConfigurationProperty("type", IsRequired = true)]
public string Type {
get {
if (typeCache == null)
typeCache = (string)base[_propType];
return typeCache;
}
set {
base[_propType] = value;
typeCache = value;
}
}
internal Type TypeInternal {
get {
return _type;
}
}
[ConfigurationProperty("validate", DefaultValue = true)]
public bool Validate {
get {
return (bool)base[_propValidate];
}
set {
base[_propValidate] = value;
}
}
internal void InitValidateInternal() {
string verb = Verb;
// Remove all spaces from verbs before wildcard parsing.
// - We don't want get in "POST, GET" to be parsed into " GET".
verb = verb.Replace(" ", String.Empty); // replace all " " with String.Empty in requestType
_requestType = new Wildcard(verb, false); // case-sensitive wildcard
_path = new WildcardUrl(Path, true); // case-insensitive URL wildcard
// if validate="false" is marked on a handler, then the type isn't created until a request
// is actually made that requires the handler. This (1) allows us to list handlers that
// aren't present without throwing errors at init time and (2) speeds up init by avoiding
// loading types until they are needed.
if (!Validate) {
_type = null;
}
else {
_type = ConfigUtil.GetType(Type, "type", this);
if (!ConfigUtil.IsTypeHandlerOrFactory(_type)) {
throw new ConfigurationErrorsException(
SR.GetString(SR.Type_not_factory_or_handler, Type),
ElementInformation.Source, ElementInformation.LineNumber);
}
}
}
internal bool IsMatch(String verb, VirtualPath path) {
return (_path.IsSuffix(path.VirtualPathString) && _requestType.IsMatch(verb));
}
internal Object Create() {
// 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
if (_type == null) {
Type t = ConfigUtil.GetType(Type, "type", this);
// throw for bad types in deferred case
if (!ConfigUtil.IsTypeHandlerOrFactory(t)) {
throw new ConfigurationErrorsException(
SR.GetString(SR.Type_not_factory_or_handler, Type),
ElementInformation.Source, ElementInformation.LineNumber);
}
_type = t;
}
return HttpRuntime.CreateNonPublicInstance(_type);
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.Configuration {
using System;
using System.Xml;
using System.Configuration;
using System.Collections.Specialized;
using System.Collections;
using System.IO;
using System.Text;
using System.Web.Util;
using System.Web.Compilation;
using System.Globalization;
using System.Security.Permissions;
[AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)]
public sealed class HttpHandlerAction : ConfigurationElement {
private static ConfigurationPropertyCollection _properties;
private static readonly ConfigurationProperty _propPath =
new ConfigurationProperty("path",
typeof(string),
null,
null,
StdValidatorsAndConverters.NonEmptyStringValidator,
ConfigurationPropertyOptions.IsRequired | ConfigurationPropertyOptions.IsKey);
private static readonly ConfigurationProperty _propVerb =
new ConfigurationProperty("verb",
typeof(string),
null,
null,
StdValidatorsAndConverters.NonEmptyStringValidator,
ConfigurationPropertyOptions.IsRequired | ConfigurationPropertyOptions.IsKey);
private static readonly ConfigurationProperty _propType =
new ConfigurationProperty("type",
typeof(string),
null,
null,
StdValidatorsAndConverters.NonEmptyStringValidator,
ConfigurationPropertyOptions.IsRequired);
private static readonly ConfigurationProperty _propValidate =
new ConfigurationProperty("validate",
typeof(bool),
true,
ConfigurationPropertyOptions.None);
private Wildcard _requestType;
private WildcardUrl _path;
private Type _type;
private string typeCache = null;
static HttpHandlerAction() {
_properties = new ConfigurationPropertyCollection();
_properties.Add(_propPath);
_properties.Add(_propVerb);
_properties.Add(_propType);
_properties.Add(_propValidate);
}
public HttpHandlerAction(String path, String type, String verb)
: this(path, type, verb, true) {
}
public HttpHandlerAction(String path, String type, String verb, bool validate) {
Path = path;
Type = type;
Verb = verb;
Validate = validate;
}
internal HttpHandlerAction() {
}
internal string Key {
get {
return "verb=" + Verb + " | path=" + Path;
}
}
protected override ConfigurationPropertyCollection Properties {
get {
return _properties;
}
}
[ConfigurationProperty("path", IsRequired = true, IsKey = true)]
public string Path {
get {
return (string)base[_propPath];
}
set {
base[_propPath] = value;
}
}
[ConfigurationProperty("verb", IsRequired = true, IsKey = true)]
public string Verb {
get {
return (string)base[_propVerb];
}
set {
base[_propVerb] = value;
}
}
[ConfigurationProperty("type", IsRequired = true)]
public string Type {
get {
if (typeCache == null)
typeCache = (string)base[_propType];
return typeCache;
}
set {
base[_propType] = value;
typeCache = value;
}
}
internal Type TypeInternal {
get {
return _type;
}
}
[ConfigurationProperty("validate", DefaultValue = true)]
public bool Validate {
get {
return (bool)base[_propValidate];
}
set {
base[_propValidate] = value;
}
}
internal void InitValidateInternal() {
string verb = Verb;
// Remove all spaces from verbs before wildcard parsing.
// - We don't want get in "POST, GET" to be parsed into " GET".
verb = verb.Replace(" ", String.Empty); // replace all " " with String.Empty in requestType
_requestType = new Wildcard(verb, false); // case-sensitive wildcard
_path = new WildcardUrl(Path, true); // case-insensitive URL wildcard
// if validate="false" is marked on a handler, then the type isn't created until a request
// is actually made that requires the handler. This (1) allows us to list handlers that
// aren't present without throwing errors at init time and (2) speeds up init by avoiding
// loading types until they are needed.
if (!Validate) {
_type = null;
}
else {
_type = ConfigUtil.GetType(Type, "type", this);
if (!ConfigUtil.IsTypeHandlerOrFactory(_type)) {
throw new ConfigurationErrorsException(
SR.GetString(SR.Type_not_factory_or_handler, Type),
ElementInformation.Source, ElementInformation.LineNumber);
}
}
}
internal bool IsMatch(String verb, VirtualPath path) {
return (_path.IsSuffix(path.VirtualPathString) && _requestType.IsMatch(verb));
}
internal Object Create() {
// 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
if (_type == null) {
Type t = ConfigUtil.GetType(Type, "type", this);
// throw for bad types in deferred case
if (!ConfigUtil.IsTypeHandlerOrFactory(t)) {
throw new ConfigurationErrorsException(
SR.GetString(SR.Type_not_factory_or_handler, Type),
ElementInformation.Source, ElementInformation.LineNumber);
}
_type = t;
}
return HttpRuntime.CreateNonPublicInstance(_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
- GacUtil.cs
- ExpandCollapsePattern.cs
- RightsManagementEncryptionTransform.cs
- sqlser.cs
- DuplicateWaitObjectException.cs
- ContextProperty.cs
- InfoCardTrace.cs
- DispatcherEventArgs.cs
- GridViewColumnCollectionChangedEventArgs.cs
- X509ChainElement.cs
- DrawingAttributeSerializer.cs
- DeclarativeCatalogPartDesigner.cs
- NamedObject.cs
- CacheModeValueSerializer.cs
- Panel.cs
- TypedTableHandler.cs
- DrawingDrawingContext.cs
- ColorConvertedBitmap.cs
- SizeKeyFrameCollection.cs
- FixedSOMPage.cs
- XmlNode.cs
- ModifierKeysValueSerializer.cs
- SqlDataSourceStatusEventArgs.cs
- SingleSelectRootGridEntry.cs
- EncryptedData.cs
- __Filters.cs
- DelayedRegex.cs
- ObjectPersistData.cs
- RegexWriter.cs
- TraceHandler.cs
- TextSpanModifier.cs
- TargetControlTypeAttribute.cs
- ResourceBinder.cs
- SizeConverter.cs
- Context.cs
- RewritingSimplifier.cs
- DirectionalLight.cs
- ConfigXmlText.cs
- X509SecurityTokenParameters.cs
- DecimalStorage.cs
- FormatterConverter.cs
- HtmlInputControl.cs
- CodeDelegateInvokeExpression.cs
- ViewValidator.cs
- ExtensionFile.cs
- WindowInteropHelper.cs
- sqlstateclientmanager.cs
- HotSpot.cs
- CodeAssignStatement.cs
- ValueQuery.cs
- SetStoryboardSpeedRatio.cs
- SqlGatherProducedAliases.cs
- MessageQueueEnumerator.cs
- XmlSchemaAnnotation.cs
- UpdateTranslator.cs
- Vector.cs
- DetailsViewInsertedEventArgs.cs
- CollectionBuilder.cs
- WriteFileContext.cs
- DynamicDocumentPaginator.cs
- ButtonFlatAdapter.cs
- SQLDecimalStorage.cs
- XNodeSchemaApplier.cs
- TextReader.cs
- MainMenu.cs
- ListControl.cs
- EntityParameter.cs
- FactoryGenerator.cs
- Partitioner.cs
- InputScopeConverter.cs
- HtmlFormParameterWriter.cs
- CapabilitiesPattern.cs
- WebPartsSection.cs
- PathData.cs
- ConditionValidator.cs
- HttpAsyncResult.cs
- CollectionChangeEventArgs.cs
- PhysicalFontFamily.cs
- DependencyObjectPropertyDescriptor.cs
- FormsAuthenticationCredentials.cs
- SectionXmlInfo.cs
- LockCookie.cs
- EventSinkHelperWriter.cs
- DoubleAnimation.cs
- PageBreakRecord.cs
- CustomWebEventKey.cs
- PreloadedPackages.cs
- BlurBitmapEffect.cs
- behaviorssection.cs
- ImageSource.cs
- ConfigurationFileMap.cs
- Policy.cs
- WebSysDescriptionAttribute.cs
- TreeViewCancelEvent.cs
- XmlElementList.cs
- PrefixQName.cs
- RestHandler.cs
- AppLevelCompilationSectionCache.cs
- BevelBitmapEffect.cs
- FileSystemInfo.cs