Code:
/ 4.0 / 4.0 / 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.
//------------------------------------------------------------------------------
//
// 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
- Baml2006Reader.cs
- ParameterCollection.cs
- HiddenField.cs
- XmlHierarchyData.cs
- GiveFeedbackEvent.cs
- LazyTextWriterCreator.cs
- SerTrace.cs
- Point4D.cs
- DesignDataSource.cs
- ContractBase.cs
- UdpChannelListener.cs
- ConfigurationManagerHelper.cs
- DocumentPageViewAutomationPeer.cs
- NumberFormatInfo.cs
- FixedSOMSemanticBox.cs
- DataBoundControl.cs
- SystemSounds.cs
- MultipartContentParser.cs
- Table.cs
- DataGridViewCellFormattingEventArgs.cs
- PropertyDescriptor.cs
- SchemaSetCompiler.cs
- ProtocolsConfigurationEntry.cs
- CodeTypeConstructor.cs
- WebServiceBindingAttribute.cs
- VariableAction.cs
- _LocalDataStore.cs
- ObjectStateEntryBaseUpdatableDataRecord.cs
- ClearTypeHintValidation.cs
- HtmlInputRadioButton.cs
- WinFormsComponentEditor.cs
- HierarchicalDataBoundControlAdapter.cs
- DataSourceNameHandler.cs
- XmlAttributeCollection.cs
- SerializationInfo.cs
- MD5CryptoServiceProvider.cs
- SHA512Managed.cs
- TemplateBamlRecordReader.cs
- EditorPartChrome.cs
- FragmentQueryProcessor.cs
- SqlNotificationRequest.cs
- ImageBrush.cs
- IndicFontClient.cs
- ImageProxy.cs
- ColorTransformHelper.cs
- ZipIOLocalFileHeader.cs
- ScriptControl.cs
- XmlTextReaderImpl.cs
- CfgParser.cs
- DesignerVerb.cs
- NativeWrapper.cs
- FixedStringLookup.cs
- SymLanguageVendor.cs
- PackWebRequest.cs
- ContextInformation.cs
- UIPermission.cs
- DocumentPageHost.cs
- PublisherMembershipCondition.cs
- IOThreadScheduler.cs
- GatewayIPAddressInformationCollection.cs
- StubHelpers.cs
- IsolatedStorageFileStream.cs
- XPathSelectionIterator.cs
- Page.cs
- ThreadStartException.cs
- xamlnodes.cs
- PresentationSource.cs
- ApplicationDirectory.cs
- CollectionViewProxy.cs
- RtfNavigator.cs
- ScrollPatternIdentifiers.cs
- InvalidContentTypeException.cs
- _RegBlobWebProxyDataBuilder.cs
- Grid.cs
- Animatable.cs
- TextDecorationCollection.cs
- BooleanExpr.cs
- SiteMapNode.cs
- DesignerDataParameter.cs
- RootAction.cs
- DetailsViewCommandEventArgs.cs
- ProviderUtil.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- EventSetter.cs
- XslUrlEditor.cs
- XmlSchemaType.cs
- HtmlInputButton.cs
- StringComparer.cs
- DbConnectionHelper.cs
- NotificationContext.cs
- OperationContextScope.cs
- OptimizedTemplateContentHelper.cs
- EntityDataSourceViewSchema.cs
- WebPartEventArgs.cs
- ConfigurationConverterBase.cs
- PlanCompilerUtil.cs
- TemplateComponentConnector.cs
- SoapSchemaMember.cs
- StaticExtension.cs
- TypeHelpers.cs