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
- UntypedNullExpression.cs
- RefExpr.cs
- EntitySetBaseCollection.cs
- BindingObserver.cs
- AggregateNode.cs
- XmlTextReaderImplHelpers.cs
- StreamGeometry.cs
- GeneralTransform3DTo2DTo3D.cs
- WorkflowEventArgs.cs
- KeyTimeConverter.cs
- ModelService.cs
- NameValueFileSectionHandler.cs
- ListViewEditEventArgs.cs
- EntitySqlQueryState.cs
- TcpChannelHelper.cs
- ToolStripMenuItemDesigner.cs
- DataGridViewCellStateChangedEventArgs.cs
- DataStreamFromComStream.cs
- Decorator.cs
- TypedTableGenerator.cs
- QueryPageSettingsEventArgs.cs
- Translator.cs
- DBCommandBuilder.cs
- XmlConvert.cs
- BatchParser.cs
- BaseParser.cs
- WorkflowRuntimeServicesBehavior.cs
- TypeExtension.cs
- LassoSelectionBehavior.cs
- Button.cs
- baseaxisquery.cs
- PhonemeConverter.cs
- Quaternion.cs
- Form.cs
- JsonXmlDataContract.cs
- AppSettingsExpressionBuilder.cs
- IpcClientChannel.cs
- TextClipboardData.cs
- Convert.cs
- X509RawDataKeyIdentifierClause.cs
- OdbcConnectionPoolProviderInfo.cs
- BooleanKeyFrameCollection.cs
- SqlProviderManifest.cs
- ColumnMap.cs
- RegexWorker.cs
- WebPartCollection.cs
- ListViewItem.cs
- _SslStream.cs
- SapiRecoInterop.cs
- OleDbError.cs
- RepeaterItem.cs
- TimelineCollection.cs
- EventHandlersStore.cs
- TextBoxBase.cs
- TcpProcessProtocolHandler.cs
- ZipIOLocalFileBlock.cs
- SmtpClient.cs
- PageContent.cs
- DesignerVerbCollection.cs
- HelpEvent.cs
- ConstrainedDataObject.cs
- TemplateColumn.cs
- BuildManagerHost.cs
- BatchWriter.cs
- MsdtcClusterUtils.cs
- SqlConnectionPoolGroupProviderInfo.cs
- RecipientInfo.cs
- CounterSetInstance.cs
- KnownBoxes.cs
- NumberFormatInfo.cs
- DrawToolTipEventArgs.cs
- ObjectSecurity.cs
- DataKey.cs
- Utils.cs
- PartialTrustVisibleAssembly.cs
- AccessControlList.cs
- PolicyUtility.cs
- SafeProcessHandle.cs
- FixedStringLookup.cs
- DBDataPermission.cs
- Propagator.cs
- RootProfilePropertySettingsCollection.cs
- AccessViolationException.cs
- VisualBasicExpressionConverter.cs
- ListItemConverter.cs
- CalendarDesigner.cs
- StatusBarPanelClickEvent.cs
- NativeMethods.cs
- ReferenceEqualityComparer.cs
- CodeMemberProperty.cs
- KeyInfo.cs
- WebPartVerbCollection.cs
- ProcessManager.cs
- MergePropertyDescriptor.cs
- FieldBuilder.cs
- ZipPackage.cs
- ExpressionBuilderCollection.cs
- EntityDataSourceSelectingEventArgs.cs
- FrameSecurityDescriptor.cs
- HttpPostedFile.cs