Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Services / Web / System / Web / Services / Description / HttpProtocolReflector.cs / 1305376 / HttpProtocolReflector.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.Services.Description { using System.Web.Services; using System.Web.Services.Protocols; using System.Xml; using System.Xml.Serialization; using System.Xml.Schema; using System.Collections; using System; using System.Reflection; using System.Web.Services.Configuration; internal abstract class HttpProtocolReflector : ProtocolReflector { MimeReflector[] reflectors; protected HttpProtocolReflector() { Type[] reflectorTypes = WebServicesSection.Current.MimeReflectorTypes; reflectors = new MimeReflector[reflectorTypes.Length]; for (int i = 0; i < reflectors.Length; i++) { MimeReflector reflector = (MimeReflector)Activator.CreateInstance(reflectorTypes[i]); reflector.ReflectionContext = this; reflectors[i] = reflector; } } protected bool ReflectMimeParameters() { bool handled = false; for (int i = 0; i < reflectors.Length; i++) { if (reflectors[i].ReflectParameters()) handled = true; } return handled; } protected bool ReflectMimeReturn() { if (Method.ReturnType == typeof(void)) { Message outputMessage = OutputMessage; return true; } bool handled = false; for (int i = 0; i < reflectors.Length; i++) { if (reflectors[i].ReflectReturn()) { handled = true; break; } } return handled; } protected bool ReflectUrlParameters() { if (!HttpServerProtocol.AreUrlParametersSupported(Method)) return false; ReflectStringParametersMessage(); OperationBinding.Input.Extensions.Add(new HttpUrlEncodedBinding()); return true; } internal void ReflectStringParametersMessage() { Message inputMessage = InputMessage; foreach (ParameterInfo parameterInfo in Method.InParameters) { MessagePart part = new MessagePart(); part.Name = XmlConvert.EncodeLocalName(parameterInfo.Name); if (parameterInfo.ParameterType.IsArray) { string typeNs = DefaultNamespace; if (typeNs.EndsWith("/", StringComparison.Ordinal)) typeNs += "AbstractTypes"; else typeNs += "/AbstractTypes"; string typeName = "StringArray"; if (!ServiceDescription.Types.Schemas.Contains(typeNs)) { XmlSchema schema = new XmlSchema(); schema.TargetNamespace = typeNs; ServiceDescription.Types.Schemas.Add(schema); XmlSchemaElement element = new XmlSchemaElement(); element.Name = "String"; element.SchemaTypeName = new XmlQualifiedName("string", XmlSchema.Namespace); element.MinOccurs = decimal.Zero; element.MaxOccurs = decimal.MaxValue; XmlSchemaSequence all = new XmlSchemaSequence(); all.Items.Add(element); XmlSchemaComplexContentRestriction restriction = new XmlSchemaComplexContentRestriction(); restriction.BaseTypeName = new XmlQualifiedName(Soap.ArrayType, Soap.Encoding); restriction.Particle = all; XmlSchemaImport import = new XmlSchemaImport(); import.Namespace = restriction.BaseTypeName.Namespace; XmlSchemaComplexContent model = new XmlSchemaComplexContent(); model.Content = restriction; XmlSchemaComplexType type = new XmlSchemaComplexType(); type.Name = typeName; type.ContentModel = model; schema.Items.Add(type); schema.Includes.Add(import); } part.Type = new XmlQualifiedName(typeName, typeNs); } else { part.Type = new XmlQualifiedName("string", XmlSchema.Namespace); } inputMessage.Parts.Add(part); } } internal string MethodUrl { get { WebMethodAttribute methodAttribute = Method.MethodAttribute; string name = methodAttribute.MessageName; if (name.Length == 0) name = Method.Name; return "/" + name; } } } } // 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
- ToolStripDropDownItem.cs
- OracleConnectionString.cs
- DebugView.cs
- DataSource.cs
- EditBehavior.cs
- ItemCheckEvent.cs
- StatusBarItem.cs
- ButtonChrome.cs
- LazyTextWriterCreator.cs
- TemplateField.cs
- KnownTypesProvider.cs
- DataShape.cs
- webclient.cs
- XmlConvert.cs
- BuildManager.cs
- ThemeDirectoryCompiler.cs
- CompilationPass2TaskInternal.cs
- WebPartConnectVerb.cs
- CompilerParameters.cs
- SourceFileInfo.cs
- MetadataWorkspace.cs
- PeerName.cs
- IntermediatePolicyValidator.cs
- ConstraintStruct.cs
- ContextActivityUtils.cs
- Triangle.cs
- Frame.cs
- MergeFailedEvent.cs
- RawUIStateInputReport.cs
- PositiveTimeSpanValidatorAttribute.cs
- ObjectDataSourceSelectingEventArgs.cs
- Point3DCollectionConverter.cs
- SHA256Managed.cs
- ShutDownListener.cs
- ToolStripItemImageRenderEventArgs.cs
- ProcessProtocolHandler.cs
- SqlAliaser.cs
- XmlSortKeyAccumulator.cs
- StreamingContext.cs
- DataBoundLiteralControl.cs
- Authorization.cs
- XdrBuilder.cs
- SingleTagSectionHandler.cs
- SolidColorBrush.cs
- WebPartConnectionsEventArgs.cs
- SqlMetaData.cs
- DecimalConstantAttribute.cs
- DataContract.cs
- EditorZoneBase.cs
- XmlDocumentType.cs
- SocketAddress.cs
- dbenumerator.cs
- SkinBuilder.cs
- EventLogPermissionEntryCollection.cs
- DataGridViewElement.cs
- DataTableNewRowEvent.cs
- SmiContext.cs
- ComponentEditorPage.cs
- StringUtil.cs
- FileIOPermission.cs
- SchemaInfo.cs
- AdapterUtil.cs
- DatatypeImplementation.cs
- CodeGenerator.cs
- QueryStringConverter.cs
- OdbcError.cs
- WebServiceMethodData.cs
- ScanQueryOperator.cs
- DisplayToken.cs
- _SslStream.cs
- TableLayout.cs
- ProcessModule.cs
- RequestQueue.cs
- SQLString.cs
- AuthenticationServiceManager.cs
- SQLMoney.cs
- FixedDSBuilder.cs
- SplashScreenNativeMethods.cs
- SqlExpressionNullability.cs
- ClientRoleProvider.cs
- MatrixTransform3D.cs
- NamespaceInfo.cs
- InternalCache.cs
- ADMembershipUser.cs
- _MultipleConnectAsync.cs
- SoapSchemaMember.cs
- XmlChildEnumerator.cs
- SessionState.cs
- XmlSerializerAssemblyAttribute.cs
- ScriptResourceHandler.cs
- parserscommon.cs
- SponsorHelper.cs
- InheritedPropertyChangedEventArgs.cs
- HostVisual.cs
- Typography.cs
- ExcCanonicalXml.cs
- JsonWriterDelegator.cs
- SoapConverter.cs
- PngBitmapEncoder.cs
- Int32RectConverter.cs