Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx35 / System.ServiceModel.Web / System / ServiceModel / Dispatcher / UriTemplateDispatchFormatter.cs / 1305376 / UriTemplateDispatchFormatter.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- #pragma warning disable 1634, 1691 namespace System.ServiceModel.Dispatcher { using System; using System.Collections; using System.Collections.Generic; using System.Collections.Specialized; using System.Globalization; using System.Reflection; using System.ServiceModel; using System.ServiceModel.Channels; using System.ServiceModel.Description; using System.ServiceModel.Diagnostics; using System.Text; using System.Xml; using System.ServiceModel.Web; using System.Diagnostics; class UriTemplateDispatchFormatter : IDispatchMessageFormatter { internal DictionarypathMapping; internal Dictionary > queryMapping; Uri baseAddress; IDispatchMessageFormatter inner; string operationName; QueryStringConverter qsc; int totalNumUTVars; UriTemplate uriTemplate; public UriTemplateDispatchFormatter(OperationDescription operationDescription, IDispatchMessageFormatter inner, QueryStringConverter qsc, string contractName, Uri baseAddress) { this.inner = inner; this.qsc = qsc; this.baseAddress = baseAddress; this.operationName = operationDescription.Name; UriTemplateClientFormatter.Populate(out this.pathMapping, out this.queryMapping, out this.totalNumUTVars, out this.uriTemplate, operationDescription, qsc, contractName); } public void DeserializeRequest(Message message, object[] parameters) { object[] innerParameters = new object[parameters.Length - this.totalNumUTVars]; if (innerParameters.Length != 0) { this.inner.DeserializeRequest(message, innerParameters); } int j = 0; UriTemplateMatch utmr = null; string UTMRName = IncomingWebRequestContext.UriTemplateMatchResultsPropertyName; if (message.Properties.ContainsKey(UTMRName)) { utmr = message.Properties[UTMRName] as UriTemplateMatch; } else { if (message.Headers.To != null && message.Headers.To.IsAbsoluteUri) { utmr = this.uriTemplate.Match(this.baseAddress, message.Headers.To); } } NameValueCollection nvc = (utmr == null) ? new NameValueCollection() : utmr.BoundVariables; for (int i = 0; i < parameters.Length; ++i) { if (this.pathMapping.ContainsKey(i) && utmr != null) { parameters[i] = nvc[this.pathMapping[i]]; } else if (this.queryMapping.ContainsKey(i) && utmr != null) { string queryVal = nvc[this.queryMapping[i].Key]; parameters[i] = this.qsc.ConvertStringToValue(queryVal, this.queryMapping[i].Value); } else { parameters[i] = innerParameters[j]; ++j; } } if (DiagnosticUtility.ShouldTraceInformation) { if (utmr != null) { foreach (string key in utmr.QueryParameters.Keys) { bool isParameterIgnored = true; foreach (KeyValuePair kvp in this.queryMapping.Values) { if (String.Compare(key, kvp.Key, StringComparison.OrdinalIgnoreCase) == 0) { isParameterIgnored = false; break; } } if (isParameterIgnored) { TraceUtility.TraceEvent(TraceEventType.Information, TraceCode.WebUnknownQueryParameterIgnored, SR2.GetString(SR2.TraceCodeWebRequestUnknownQueryParameterIgnored, key, operationName)); } } } } } public Message SerializeReply(MessageVersion messageVersion, object[] parameters, object result) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotSupportedException(SR2.GetString(SR2.QueryStringFormatterOperationNotSupportedServerSide))); } } } // 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
- FormsAuthentication.cs
- Evidence.cs
- SqlMethods.cs
- HtmlControlPersistable.cs
- FormsAuthenticationEventArgs.cs
- RelatedCurrencyManager.cs
- DrawingVisualDrawingContext.cs
- SmtpException.cs
- Int32RectConverter.cs
- ResourceExpression.cs
- DescriptionAttribute.cs
- UnsafeNativeMethods.cs
- PassportAuthentication.cs
- HwndHostAutomationPeer.cs
- TileBrush.cs
- DesignSurfaceEvent.cs
- FixedSOMFixedBlock.cs
- SQLMoneyStorage.cs
- NamespaceEmitter.cs
- StructuredTypeInfo.cs
- ByteArrayHelperWithString.cs
- LayoutSettings.cs
- Metafile.cs
- AttributeData.cs
- StrongNameUtility.cs
- SafeRightsManagementQueryHandle.cs
- PointAnimationUsingKeyFrames.cs
- HMACSHA512.cs
- HandleCollector.cs
- Dispatcher.cs
- _NetRes.cs
- TransferRequestHandler.cs
- SyndicationFeedFormatter.cs
- DllHostInitializer.cs
- MonitorWrapper.cs
- TypeReference.cs
- EntityType.cs
- SchemaImporterExtensionElementCollection.cs
- BooleanFunctions.cs
- Parallel.cs
- SafeRegistryHandle.cs
- PresentationTraceSources.cs
- CopyOfAction.cs
- DataGridRow.cs
- Evidence.cs
- DataBoundControlDesigner.cs
- Operator.cs
- WorkflowServiceBehavior.cs
- Geometry.cs
- RightsManagementEncryptedStream.cs
- ObjectSet.cs
- TargetControlTypeAttribute.cs
- PixelShader.cs
- TableCellCollection.cs
- ExtentCqlBlock.cs
- CharacterBufferReference.cs
- ClientProtocol.cs
- HostAdapter.cs
- Point.cs
- DataGridViewButtonCell.cs
- SqlProcedureAttribute.cs
- FamilyMapCollection.cs
- BaseValidator.cs
- XmlSchemaParticle.cs
- MdImport.cs
- JournalEntryListConverter.cs
- LayoutEditorPart.cs
- Method.cs
- DemultiplexingDispatchMessageFormatter.cs
- NodeLabelEditEvent.cs
- Rotation3DKeyFrameCollection.cs
- jithelpers.cs
- ToolStripSeparatorRenderEventArgs.cs
- SQLGuid.cs
- InternalRelationshipCollection.cs
- ImmutableObjectAttribute.cs
- isolationinterop.cs
- LogLogRecordEnumerator.cs
- xml.cs
- PersistenceProviderBehavior.cs
- MobileErrorInfo.cs
- Label.cs
- SQLBinaryStorage.cs
- WCFBuildProvider.cs
- SmiMetaData.cs
- CodeMemberEvent.cs
- HttpFileCollection.cs
- BinaryReader.cs
- EmptyStringExpandableObjectConverter.cs
- WebAdminConfigurationHelper.cs
- Panel.cs
- XmlReflectionMember.cs
- DataGridViewButtonColumn.cs
- RSAProtectedConfigurationProvider.cs
- AutoGeneratedFieldProperties.cs
- UnitySerializationHolder.cs
- RenderContext.cs
- CryptoSession.cs
- WsatAdminException.cs
- WorkflowApplicationAbortedEventArgs.cs