Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Services / Web / System / Web / Services / Protocols / RuntimeUtils.cs / 1305376 / RuntimeUtils.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.Services.Protocols { using System.Web.Services; using System.Xml; using System.Xml.Schema; using System.Xml.Serialization; using System; using System.Text; using System.IO; using System.ComponentModel; using System.Globalization; using System.Web.Services.Diagnostics; internal class RuntimeUtils { private RuntimeUtils() { } internal static XmlDeserializationEvents GetDeserializationEvents() { XmlDeserializationEvents events = new XmlDeserializationEvents(); events.OnUnknownElement = new XmlElementEventHandler(OnUnknownElement); events.OnUnknownAttribute = new XmlAttributeEventHandler(OnUnknownAttribute); return events; } static void OnUnknownAttribute(object sender, XmlAttributeEventArgs e) { if (e.Attr == null) return; // ignore attributes from known namepsaces if (IsKnownNamespace(e.Attr.NamespaceURI)) return; Tracing.OnUnknownAttribute(sender, e); if (e.ExpectedAttributes == null) throw new InvalidOperationException(Res.GetString(Res.WebUnknownAttribute, e.Attr.Name, e.Attr.Value)); else if (e.ExpectedAttributes.Length == 0) throw new InvalidOperationException(Res.GetString(Res.WebUnknownAttribute2, e.Attr.Name, e.Attr.Value)); else throw new InvalidOperationException(Res.GetString(Res.WebUnknownAttribute3, e.Attr.Name, e.Attr.Value, e.ExpectedAttributes)); } internal static string ElementString(XmlElement element) { StringWriter xml = new StringWriter(CultureInfo.InvariantCulture); xml.Write("<"); xml.Write(element.Name); if (element.NamespaceURI != null && element.NamespaceURI.Length > 0) { xml.Write(" xmlns"); if (element.Prefix != null && element.Prefix.Length > 0) { xml.Write(":"); xml.Write(element.Prefix); } xml.Write("='"); xml.Write(element.NamespaceURI); xml.Write("'"); } xml.Write(">.."); xml.Write(element.Name); xml.Write(">"); return xml.ToString(); } internal static void OnUnknownElement(object sender, XmlElementEventArgs e) { if (e.Element == null) return; string xml = RuntimeUtils.ElementString(e.Element); Tracing.OnUnknownElement(sender, e); if (e.ExpectedElements == null) throw new InvalidOperationException(Res.GetString(Res.WebUnknownElement, xml)); else if (e.ExpectedElements.Length == 0) throw new InvalidOperationException(Res.GetString(Res.WebUnknownElement1, xml)); else throw new InvalidOperationException(Res.GetString(Res.WebUnknownElement2, xml, e.ExpectedElements)); } internal static bool IsKnownNamespace(string ns) { if (ns == XmlSchema.InstanceNamespace) return true; if (ns == Soap.XmlNamespace) return true; if (ns == Soap.Encoding || ns == Soap.Namespace) return true; if (ns == Soap12.Namespace || ns == Soap12.Encoding || ns == Soap12.RpcNamespace) return true; return false; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.Services.Protocols { using System.Web.Services; using System.Xml; using System.Xml.Schema; using System.Xml.Serialization; using System; using System.Text; using System.IO; using System.ComponentModel; using System.Globalization; using System.Web.Services.Diagnostics; internal class RuntimeUtils { private RuntimeUtils() { } internal static XmlDeserializationEvents GetDeserializationEvents() { XmlDeserializationEvents events = new XmlDeserializationEvents(); events.OnUnknownElement = new XmlElementEventHandler(OnUnknownElement); events.OnUnknownAttribute = new XmlAttributeEventHandler(OnUnknownAttribute); return events; } static void OnUnknownAttribute(object sender, XmlAttributeEventArgs e) { if (e.Attr == null) return; // ignore attributes from known namepsaces if (IsKnownNamespace(e.Attr.NamespaceURI)) return; Tracing.OnUnknownAttribute(sender, e); if (e.ExpectedAttributes == null) throw new InvalidOperationException(Res.GetString(Res.WebUnknownAttribute, e.Attr.Name, e.Attr.Value)); else if (e.ExpectedAttributes.Length == 0) throw new InvalidOperationException(Res.GetString(Res.WebUnknownAttribute2, e.Attr.Name, e.Attr.Value)); else throw new InvalidOperationException(Res.GetString(Res.WebUnknownAttribute3, e.Attr.Name, e.Attr.Value, e.ExpectedAttributes)); } internal static string ElementString(XmlElement element) { StringWriter xml = new StringWriter(CultureInfo.InvariantCulture); xml.Write("<"); xml.Write(element.Name); if (element.NamespaceURI != null && element.NamespaceURI.Length > 0) { xml.Write(" xmlns"); if (element.Prefix != null && element.Prefix.Length > 0) { xml.Write(":"); xml.Write(element.Prefix); } xml.Write("='"); xml.Write(element.NamespaceURI); xml.Write("'"); } xml.Write(">.."); xml.Write(element.Name); xml.Write(">"); return xml.ToString(); } internal static void OnUnknownElement(object sender, XmlElementEventArgs e) { if (e.Element == null) return; string xml = RuntimeUtils.ElementString(e.Element); Tracing.OnUnknownElement(sender, e); if (e.ExpectedElements == null) throw new InvalidOperationException(Res.GetString(Res.WebUnknownElement, xml)); else if (e.ExpectedElements.Length == 0) throw new InvalidOperationException(Res.GetString(Res.WebUnknownElement1, xml)); else throw new InvalidOperationException(Res.GetString(Res.WebUnknownElement2, xml, e.ExpectedElements)); } internal static bool IsKnownNamespace(string ns) { if (ns == XmlSchema.InstanceNamespace) return true; if (ns == Soap.XmlNamespace) return true; if (ns == Soap.Encoding || ns == Soap.Namespace) return true; if (ns == Soap12.Namespace || ns == Soap12.Encoding || ns == Soap12.RpcNamespace) return true; return false; } } } // 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
- ConstructorNeedsTagAttribute.cs
- RuntimeConfig.cs
- CodeArrayIndexerExpression.cs
- ConvertEvent.cs
- SeekableReadStream.cs
- StatusBarItem.cs
- ProjectionNode.cs
- XmlRawWriter.cs
- MarginsConverter.cs
- SQLBoolean.cs
- LayoutEvent.cs
- ByteKeyFrameCollection.cs
- ProgressChangedEventArgs.cs
- PerformanceCountersElement.cs
- SiteMapNodeCollection.cs
- CodeMemberField.cs
- QilExpression.cs
- AuditLog.cs
- SystemWebCachingSectionGroup.cs
- CategoryAttribute.cs
- DbModificationCommandTree.cs
- DataServiceProviderMethods.cs
- BufferedGenericXmlSecurityToken.cs
- IdnElement.cs
- InheritablePropertyChangeInfo.cs
- UIElementHelper.cs
- AssemblyBuilderData.cs
- TemplateControlParser.cs
- ScrollableControl.cs
- SessionStateItemCollection.cs
- Material.cs
- DataGridViewCellStyleBuilderDialog.cs
- ObjectDataSourceChooseTypePanel.cs
- Matrix3DConverter.cs
- ElementHost.cs
- DynamicActionMessageFilter.cs
- PageAdapter.cs
- WindowsRebar.cs
- ProviderConnectionPoint.cs
- AvTraceDetails.cs
- ApplicationFileParser.cs
- ObjectTag.cs
- ImportCatalogPart.cs
- RadioButton.cs
- _AutoWebProxyScriptEngine.cs
- BufferedStream2.cs
- WindowsEditBoxRange.cs
- IImplicitResourceProvider.cs
- ToolStripMenuItemDesigner.cs
- CodeExporter.cs
- MarkupCompilePass1.cs
- ComponentCollection.cs
- SchemaImporter.cs
- ManipulationStartedEventArgs.cs
- XmlRawWriter.cs
- DataRecordInternal.cs
- SqlUserDefinedTypeAttribute.cs
- Panel.cs
- NumberSubstitution.cs
- WebPartDescription.cs
- FixedDocumentSequencePaginator.cs
- ValidationSummary.cs
- TreeNodeBindingCollection.cs
- HostingEnvironmentException.cs
- RegexCapture.cs
- MsmqReceiveParameters.cs
- SelectorAutomationPeer.cs
- _NegotiateClient.cs
- ControlHelper.cs
- GPRECT.cs
- SerializableReadOnlyDictionary.cs
- GroupDescription.cs
- ToolboxItemAttribute.cs
- FileController.cs
- ControlPropertyNameConverter.cs
- ManipulationDelta.cs
- InputLanguageCollection.cs
- SQLMoneyStorage.cs
- ButtonChrome.cs
- Convert.cs
- Utility.cs
- WindowsProgressbar.cs
- WebHttpDispatchOperationSelector.cs
- PersonalizableAttribute.cs
- MultiPageTextView.cs
- SQLGuid.cs
- JulianCalendar.cs
- ValueType.cs
- DriveNotFoundException.cs
- XPathQueryGenerator.cs
- ExpandCollapseProviderWrapper.cs
- DbConnectionClosed.cs
- Dictionary.cs
- _PooledStream.cs
- XmlSchemaObjectCollection.cs
- BuildManager.cs
- HyperLink.cs
- ViewDesigner.cs
- StorageComplexTypeMapping.cs
- ListBindableAttribute.cs