Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / DEVDIV / depot / DevDiv / releases / whidbey / QFE / ndp / fx / src / xsp / System / Web / Configuration / HandlerBase.cs / 2 / HandlerBase.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- /* * HandlerBase contains static helper functions for consistent XML parsing * behavior and error messages. * * Copyright (c) 1998 Microsoft Corporation */ namespace System.Web.Configuration { using System.Collections; using System.Collections.Specialized; using System.Configuration; using System.Globalization; using System.Text; using System.Web.Hosting; using System.Web.Util; using System.Xml; using System.Web.Compilation; static internal class HandlerBase { // // XML Attribute Helpers // private static XmlNode GetAndRemoveAttribute(XmlNode node, string attrib, bool fRequired) { XmlNode a = node.Attributes.RemoveNamedItem(attrib); // If the attribute is required and was not present, throw if (fRequired && a == null) { throw new ConfigurationErrorsException( SR.GetString(SR.Missing_required_attribute, attrib, node.Name), node); } return a; } private static XmlNode GetAndRemoveStringAttributeInternal(XmlNode node, string attrib, bool fRequired, ref string val) { XmlNode a = GetAndRemoveAttribute(node, attrib, fRequired); if (a != null) { val = a.Value; } return a; } internal static XmlNode GetAndRemoveStringAttribute(XmlNode node, string attrib, ref string val) { return GetAndRemoveStringAttributeInternal(node, attrib, false /*fRequired*/, ref val); } internal static XmlNode GetAndRemoveRequiredStringAttribute(XmlNode node, string attrib, ref string val) { return GetAndRemoveStringAttributeInternal(node, attrib, true /*fRequired*/, ref val); } internal static XmlNode GetAndRemoveNonEmptyStringAttribute(XmlNode node, string attrib, ref string val) { return GetAndRemoveNonEmptyStringAttributeInternal(node, attrib, false /*fRequired*/, ref val); } internal static XmlNode GetAndRemoveRequiredNonEmptyStringAttribute(XmlNode node, string attrib, ref string val) { return GetAndRemoveNonEmptyStringAttributeInternal(node, attrib, true /*fRequired*/, ref val); } private static XmlNode GetAndRemoveNonEmptyStringAttributeInternal(XmlNode node, string attrib, bool fRequired, ref string val) { XmlNode a = GetAndRemoveStringAttributeInternal(node, attrib, fRequired, ref val); if (a != null && val.Length == 0) { throw new ConfigurationErrorsException( SR.GetString(SR.Empty_attribute, attrib), a); } return a; } // input.Xml cursor must be at a true/false XML attribute private static XmlNode GetAndRemoveBooleanAttributeInternal(XmlNode node, string attrib, bool fRequired, ref bool val) { XmlNode a = GetAndRemoveAttribute(node, attrib, fRequired); if (a != null) { if (a.Value == "true") { val = true; } else if (a.Value == "false") { val = false; } else { throw new ConfigurationErrorsException( SR.GetString(SR.Invalid_boolean_attribute, a.Name), a); } } return a; } internal static XmlNode GetAndRemoveBooleanAttribute(XmlNode node, string attrib, ref bool val) { return GetAndRemoveBooleanAttributeInternal(node, attrib, false /*fRequired*/, ref val); } private static XmlNode GetAndRemoveIntegerAttributeInternal(XmlNode node, string attrib, bool fRequired, ref int val) { XmlNode a = GetAndRemoveAttribute(node, attrib, fRequired); if (a != null) { if (a.Value.Trim() != a.Value) { throw new ConfigurationErrorsException( SR.GetString(SR.Invalid_integer_attribute, a.Name), a); } try { val = int.Parse(a.Value, CultureInfo.InvariantCulture); } catch (Exception e) { throw new ConfigurationErrorsException( SR.GetString(SR.Invalid_integer_attribute, a.Name), e, a); } } return a; } private static XmlNode GetAndRemovePositiveAttributeInternal(XmlNode node, string attrib, bool fRequired, ref int val) { XmlNode a = GetAndRemoveIntegerAttributeInternal(node, attrib, fRequired, ref val); if (a != null && val <= 0) { throw new ConfigurationErrorsException( SR.GetString(SR.Invalid_positive_integer_attribute, attrib), a); } return a; } internal static XmlNode GetAndRemovePositiveIntegerAttribute(XmlNode node, string attrib, ref int val) { return GetAndRemovePositiveAttributeInternal(node, attrib, false /*fRequired*/, ref val); } #if UNUSED_CODE internal static XmlNode GetAndRemoveRequiredPositiveIntegerAttribute(XmlNode node, string attrib, ref int val) { return GetAndRemovePositiveAttributeInternal(node, attrib, true /*fRequired*/, ref val); } #endif private static XmlNode GetAndRemoveTypeAttributeInternal(XmlNode node, string attrib, bool fRequired, ref Type val) { XmlNode a = GetAndRemoveAttribute(node, attrib, fRequired); if (a != null) { val = ConfigUtil.GetType(a.Value, a); } return a; } internal static XmlNode GetAndRemoveTypeAttribute(XmlNode node, string attrib, ref Type val) { return GetAndRemoveTypeAttributeInternal(node, attrib, false /*fRequired*/, ref val); } internal static void CheckForbiddenAttribute(XmlNode node, string attrib) { XmlAttribute attr = node.Attributes[attrib]; if (attr != null) { throw new ConfigurationErrorsException( SR.GetString(SR.Config_base_unrecognized_attribute, attrib), attr); } } internal static void CheckForUnrecognizedAttributes(XmlNode node) { if (node.Attributes.Count != 0) { throw new ConfigurationErrorsException( SR.GetString(SR.Config_base_unrecognized_attribute, node.Attributes[0].Name), node.Attributes[0]); } } #if UNUSED_CODE // Throw an exception complaining that a line is duplicated (ASURT 93151) internal static void ThrowDuplicateLineException(XmlNode node) { throw new ConfigurationErrorsException( SR.GetString(SR.Config_base_duplicate_line), node); } #endif // // Obsolete XML Attribute Helpers // // if attribute not found return null internal static string RemoveAttribute(XmlNode node, string name) { XmlNode attribute = node.Attributes.RemoveNamedItem(name); if (attribute != null) { return attribute.Value; } return null; } // if attr not found throw standard message - "attribute x required" internal static string RemoveRequiredAttribute(XmlNode node, string name) { return RemoveRequiredAttribute(node, name, false); } internal static string RemoveRequiredAttribute(XmlNode node, string name, bool allowEmpty) { XmlNode attribute = node.Attributes.RemoveNamedItem(name); if (attribute == null) { throw new ConfigurationErrorsException( SR.GetString(SR.Config_base_required_attribute_missing, name), node); } if (attribute.Value.Length == 0 && !allowEmpty) { throw new ConfigurationErrorsException( SR.GetString(SR.Config_base_required_attribute_empty, name), node); } return attribute.Value; } // // XML Element Helpers // internal static void CheckForNonCommentChildNodes(XmlNode node) { foreach (XmlNode childNode in node.ChildNodes) { if (childNode.NodeType != XmlNodeType.Comment) { throw new ConfigurationErrorsException( SR.GetString(SR.Config_base_no_child_nodes), childNode); } } } internal static void ThrowUnrecognizedElement(XmlNode node) { throw new ConfigurationErrorsException( SR.GetString(SR.Config_base_unrecognized_element), node); } internal static void CheckAssignableType(XmlNode node, Type baseType, Type type) { if (!baseType.IsAssignableFrom(type)) { throw new ConfigurationErrorsException( SR.GetString(SR.Type_doesnt_inherit_from_type, type.FullName, baseType.FullName), node); } } internal static void CheckAssignableType(string filename, int lineNumber, Type baseType, Type type) { if (!baseType.IsAssignableFrom(type)) { throw new ConfigurationErrorsException( SR.GetString(SR.Type_doesnt_inherit_from_type, type.FullName, baseType.FullName), filename, lineNumber); } } // Section handlers can run in client mode through: // ConfigurationManager.GetSection("sectionName") // See ASURT 123738 internal static bool IsServerConfiguration(object context) { return context is HttpConfigurationContext; } internal static bool CheckAndReadRegistryValue(ref string value, bool throwIfError) { if (value == null) { return true; } if (!StringUtil.StringStartsWithIgnoreCase(value, "registry:")) { // Not a registry value. It's not an error. return true; } const int size = 1024; StringBuilder str = new StringBuilder(size); int iRet = UnsafeNativeMethods.GetCredentialFromRegistry(value, str, size); if (iRet == 0) { value = str.ToString(); return true; } else { if (throwIfError) { throw new ConfigurationErrorsException( SR.GetString(SR.Invalid_registry_config)); } else { return false; } } } internal static bool CheckAndReadConnectionString(ref string connectionString, bool throwIfError) { ConnectionStringSettings connObj = RuntimeConfig.GetConfig().ConnectionStrings.ConnectionStrings[connectionString]; if (connObj != null && connObj.ConnectionString != null && connObj.ConnectionString.Length > 0) connectionString = connObj.ConnectionString; return CheckAndReadRegistryValue(ref connectionString, throwIfError); } } } // 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. // //----------------------------------------------------------------------------- /* * HandlerBase contains static helper functions for consistent XML parsing * behavior and error messages. * * Copyright (c) 1998 Microsoft Corporation */ namespace System.Web.Configuration { using System.Collections; using System.Collections.Specialized; using System.Configuration; using System.Globalization; using System.Text; using System.Web.Hosting; using System.Web.Util; using System.Xml; using System.Web.Compilation; static internal class HandlerBase { // // XML Attribute Helpers // private static XmlNode GetAndRemoveAttribute(XmlNode node, string attrib, bool fRequired) { XmlNode a = node.Attributes.RemoveNamedItem(attrib); // If the attribute is required and was not present, throw if (fRequired && a == null) { throw new ConfigurationErrorsException( SR.GetString(SR.Missing_required_attribute, attrib, node.Name), node); } return a; } private static XmlNode GetAndRemoveStringAttributeInternal(XmlNode node, string attrib, bool fRequired, ref string val) { XmlNode a = GetAndRemoveAttribute(node, attrib, fRequired); if (a != null) { val = a.Value; } return a; } internal static XmlNode GetAndRemoveStringAttribute(XmlNode node, string attrib, ref string val) { return GetAndRemoveStringAttributeInternal(node, attrib, false /*fRequired*/, ref val); } internal static XmlNode GetAndRemoveRequiredStringAttribute(XmlNode node, string attrib, ref string val) { return GetAndRemoveStringAttributeInternal(node, attrib, true /*fRequired*/, ref val); } internal static XmlNode GetAndRemoveNonEmptyStringAttribute(XmlNode node, string attrib, ref string val) { return GetAndRemoveNonEmptyStringAttributeInternal(node, attrib, false /*fRequired*/, ref val); } internal static XmlNode GetAndRemoveRequiredNonEmptyStringAttribute(XmlNode node, string attrib, ref string val) { return GetAndRemoveNonEmptyStringAttributeInternal(node, attrib, true /*fRequired*/, ref val); } private static XmlNode GetAndRemoveNonEmptyStringAttributeInternal(XmlNode node, string attrib, bool fRequired, ref string val) { XmlNode a = GetAndRemoveStringAttributeInternal(node, attrib, fRequired, ref val); if (a != null && val.Length == 0) { throw new ConfigurationErrorsException( SR.GetString(SR.Empty_attribute, attrib), a); } return a; } // input.Xml cursor must be at a true/false XML attribute private static XmlNode GetAndRemoveBooleanAttributeInternal(XmlNode node, string attrib, bool fRequired, ref bool val) { XmlNode a = GetAndRemoveAttribute(node, attrib, fRequired); if (a != null) { if (a.Value == "true") { val = true; } else if (a.Value == "false") { val = false; } else { throw new ConfigurationErrorsException( SR.GetString(SR.Invalid_boolean_attribute, a.Name), a); } } return a; } internal static XmlNode GetAndRemoveBooleanAttribute(XmlNode node, string attrib, ref bool val) { return GetAndRemoveBooleanAttributeInternal(node, attrib, false /*fRequired*/, ref val); } private static XmlNode GetAndRemoveIntegerAttributeInternal(XmlNode node, string attrib, bool fRequired, ref int val) { XmlNode a = GetAndRemoveAttribute(node, attrib, fRequired); if (a != null) { if (a.Value.Trim() != a.Value) { throw new ConfigurationErrorsException( SR.GetString(SR.Invalid_integer_attribute, a.Name), a); } try { val = int.Parse(a.Value, CultureInfo.InvariantCulture); } catch (Exception e) { throw new ConfigurationErrorsException( SR.GetString(SR.Invalid_integer_attribute, a.Name), e, a); } } return a; } private static XmlNode GetAndRemovePositiveAttributeInternal(XmlNode node, string attrib, bool fRequired, ref int val) { XmlNode a = GetAndRemoveIntegerAttributeInternal(node, attrib, fRequired, ref val); if (a != null && val <= 0) { throw new ConfigurationErrorsException( SR.GetString(SR.Invalid_positive_integer_attribute, attrib), a); } return a; } internal static XmlNode GetAndRemovePositiveIntegerAttribute(XmlNode node, string attrib, ref int val) { return GetAndRemovePositiveAttributeInternal(node, attrib, false /*fRequired*/, ref val); } #if UNUSED_CODE internal static XmlNode GetAndRemoveRequiredPositiveIntegerAttribute(XmlNode node, string attrib, ref int val) { return GetAndRemovePositiveAttributeInternal(node, attrib, true /*fRequired*/, ref val); } #endif private static XmlNode GetAndRemoveTypeAttributeInternal(XmlNode node, string attrib, bool fRequired, ref Type val) { XmlNode a = GetAndRemoveAttribute(node, attrib, fRequired); if (a != null) { val = ConfigUtil.GetType(a.Value, a); } return a; } internal static XmlNode GetAndRemoveTypeAttribute(XmlNode node, string attrib, ref Type val) { return GetAndRemoveTypeAttributeInternal(node, attrib, false /*fRequired*/, ref val); } internal static void CheckForbiddenAttribute(XmlNode node, string attrib) { XmlAttribute attr = node.Attributes[attrib]; if (attr != null) { throw new ConfigurationErrorsException( SR.GetString(SR.Config_base_unrecognized_attribute, attrib), attr); } } internal static void CheckForUnrecognizedAttributes(XmlNode node) { if (node.Attributes.Count != 0) { throw new ConfigurationErrorsException( SR.GetString(SR.Config_base_unrecognized_attribute, node.Attributes[0].Name), node.Attributes[0]); } } #if UNUSED_CODE // Throw an exception complaining that a line is duplicated (ASURT 93151) internal static void ThrowDuplicateLineException(XmlNode node) { throw new ConfigurationErrorsException( SR.GetString(SR.Config_base_duplicate_line), node); } #endif // // Obsolete XML Attribute Helpers // // if attribute not found return null internal static string RemoveAttribute(XmlNode node, string name) { XmlNode attribute = node.Attributes.RemoveNamedItem(name); if (attribute != null) { return attribute.Value; } return null; } // if attr not found throw standard message - "attribute x required" internal static string RemoveRequiredAttribute(XmlNode node, string name) { return RemoveRequiredAttribute(node, name, false); } internal static string RemoveRequiredAttribute(XmlNode node, string name, bool allowEmpty) { XmlNode attribute = node.Attributes.RemoveNamedItem(name); if (attribute == null) { throw new ConfigurationErrorsException( SR.GetString(SR.Config_base_required_attribute_missing, name), node); } if (attribute.Value.Length == 0 && !allowEmpty) { throw new ConfigurationErrorsException( SR.GetString(SR.Config_base_required_attribute_empty, name), node); } return attribute.Value; } // // XML Element Helpers // internal static void CheckForNonCommentChildNodes(XmlNode node) { foreach (XmlNode childNode in node.ChildNodes) { if (childNode.NodeType != XmlNodeType.Comment) { throw new ConfigurationErrorsException( SR.GetString(SR.Config_base_no_child_nodes), childNode); } } } internal static void ThrowUnrecognizedElement(XmlNode node) { throw new ConfigurationErrorsException( SR.GetString(SR.Config_base_unrecognized_element), node); } internal static void CheckAssignableType(XmlNode node, Type baseType, Type type) { if (!baseType.IsAssignableFrom(type)) { throw new ConfigurationErrorsException( SR.GetString(SR.Type_doesnt_inherit_from_type, type.FullName, baseType.FullName), node); } } internal static void CheckAssignableType(string filename, int lineNumber, Type baseType, Type type) { if (!baseType.IsAssignableFrom(type)) { throw new ConfigurationErrorsException( SR.GetString(SR.Type_doesnt_inherit_from_type, type.FullName, baseType.FullName), filename, lineNumber); } } // Section handlers can run in client mode through: // ConfigurationManager.GetSection("sectionName") // See ASURT 123738 internal static bool IsServerConfiguration(object context) { return context is HttpConfigurationContext; } internal static bool CheckAndReadRegistryValue(ref string value, bool throwIfError) { if (value == null) { return true; } if (!StringUtil.StringStartsWithIgnoreCase(value, "registry:")) { // Not a registry value. It's not an error. return true; } const int size = 1024; StringBuilder str = new StringBuilder(size); int iRet = UnsafeNativeMethods.GetCredentialFromRegistry(value, str, size); if (iRet == 0) { value = str.ToString(); return true; } else { if (throwIfError) { throw new ConfigurationErrorsException( SR.GetString(SR.Invalid_registry_config)); } else { return false; } } } internal static bool CheckAndReadConnectionString(ref string connectionString, bool throwIfError) { ConnectionStringSettings connObj = RuntimeConfig.GetConfig().ConnectionStrings.ConnectionStrings[connectionString]; if (connObj != null && connObj.ConnectionString != null && connObj.ConnectionString.Length > 0) connectionString = connObj.ConnectionString; return CheckAndReadRegistryValue(ref connectionString, throwIfError); } } } // 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
- EventRoute.cs
- RectangleGeometry.cs
- IdentifierCollection.cs
- XmlILOptimizerVisitor.cs
- CodeSnippetCompileUnit.cs
- PerformanceCounterCategory.cs
- CategoryAttribute.cs
- DataGridViewColumn.cs
- HtmlTextArea.cs
- TextParentUndoUnit.cs
- EventDescriptor.cs
- Point3DValueSerializer.cs
- SoundPlayer.cs
- QilXmlReader.cs
- Emitter.cs
- ListItemCollection.cs
- ContextMenu.cs
- ZipIOFileItemStream.cs
- ProxyFragment.cs
- XmlComplianceUtil.cs
- TextContainerChangeEventArgs.cs
- ActivationArguments.cs
- StylusPointPropertyInfoDefaults.cs
- TimeSpanMinutesOrInfiniteConverter.cs
- ActionMismatchAddressingException.cs
- DataKeyArray.cs
- TableLayoutPanelCellPosition.cs
- MarkupExtensionReturnTypeAttribute.cs
- XmlSchemaAttribute.cs
- DecimalKeyFrameCollection.cs
- MissingFieldException.cs
- CheckBox.cs
- QueryPageSettingsEventArgs.cs
- OwnerDrawPropertyBag.cs
- XmlValidatingReader.cs
- DragDeltaEventArgs.cs
- UnsafeMethods.cs
- BaseCodePageEncoding.cs
- DockProviderWrapper.cs
- FilteredAttributeCollection.cs
- NetworkCredential.cs
- SelectedDatesCollection.cs
- XmlUtil.cs
- UdpChannelListener.cs
- SchemaImporterExtensionElement.cs
- DataGridViewComboBoxCell.cs
- OdbcErrorCollection.cs
- RegularExpressionValidator.cs
- Mouse.cs
- TextTreeUndoUnit.cs
- CompilerError.cs
- Char.cs
- InvokeGenerator.cs
- FixedSOMElement.cs
- wmiprovider.cs
- WhereQueryOperator.cs
- XamlParser.cs
- Walker.cs
- WindowsGraphicsWrapper.cs
- SectionUpdates.cs
- SignedPkcs7.cs
- _ShellExpression.cs
- HtmlInputRadioButton.cs
- WriteTimeStream.cs
- _BaseOverlappedAsyncResult.cs
- VersionConverter.cs
- _ScatterGatherBuffers.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- DefaultObjectMappingItemCollection.cs
- RoleGroupCollection.cs
- TraceData.cs
- XmlTextReader.cs
- HasCopySemanticsAttribute.cs
- PropertyEntry.cs
- StatusBarDrawItemEvent.cs
- AffineTransform3D.cs
- HashCodeCombiner.cs
- ListBase.cs
- SymmetricAlgorithm.cs
- DesignerAutoFormatCollection.cs
- DataSetMappper.cs
- VectorAnimationBase.cs
- RectAnimationBase.cs
- BitmapCodecInfo.cs
- BooleanToVisibilityConverter.cs
- Psha1DerivedKeyGenerator.cs
- X509Certificate.cs
- AstNode.cs
- HTMLTagNameToTypeMapper.cs
- SortDescription.cs
- MouseWheelEventArgs.cs
- List.cs
- KeyEvent.cs
- DataColumnChangeEvent.cs
- _BasicClient.cs
- FontInfo.cs
- ProcessProtocolHandler.cs
- OutputCacheSettings.cs
- DesignBindingConverter.cs
- DataRow.cs