Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / NetFx35 / System.ServiceModel.Web / System / ServiceModel / WebHttpBinding.cs / 1 / WebHttpBinding.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.ServiceModel { using System; using System.Configuration; using System.ServiceModel.Channels; using System.ServiceModel.Configuration; using System.ServiceModel.Description; using System.Text; using System.Xml; public class WebHttpBinding : Binding, IBindingRuntimePreferences { HttpsTransportBindingElement httpsTransportBindingElement; // private BindingElements HttpTransportBindingElement httpTransportBindingElement; WebHttpSecurity security = new WebHttpSecurity(); WebMessageEncodingBindingElement webMessageEncodingBindingElement; public WebHttpBinding() : this(WebHttpSecurityMode.None) { } public WebHttpBinding(string configurationName) : this() { ApplyConfiguration(configurationName); } public WebHttpBinding(WebHttpSecurityMode securityMode) : base() { Initialize(); this.security.Mode = securityMode; } public bool AllowCookies { get { return httpTransportBindingElement.AllowCookies; } set { httpTransportBindingElement.AllowCookies = value; httpsTransportBindingElement.AllowCookies = value; } } public bool BypassProxyOnLocal { get { return httpTransportBindingElement.BypassProxyOnLocal; } set { httpTransportBindingElement.BypassProxyOnLocal = value; httpsTransportBindingElement.BypassProxyOnLocal = value; } } public EnvelopeVersion EnvelopeVersion { get { return EnvelopeVersion.None; } } public HostNameComparisonMode HostNameComparisonMode { get { return httpTransportBindingElement.HostNameComparisonMode; } set { httpTransportBindingElement.HostNameComparisonMode = value; httpsTransportBindingElement.HostNameComparisonMode = value; } } public long MaxBufferPoolSize { get { return httpTransportBindingElement.MaxBufferPoolSize; } set { httpTransportBindingElement.MaxBufferPoolSize = value; httpsTransportBindingElement.MaxBufferPoolSize = value; } } public int MaxBufferSize { get { return httpTransportBindingElement.MaxBufferSize; } set { httpTransportBindingElement.MaxBufferSize = value; httpsTransportBindingElement.MaxBufferSize = value; } } public long MaxReceivedMessageSize { get { return httpTransportBindingElement.MaxReceivedMessageSize; } set { httpTransportBindingElement.MaxReceivedMessageSize = value; httpsTransportBindingElement.MaxReceivedMessageSize = value; } } public Uri ProxyAddress { get { return httpTransportBindingElement.ProxyAddress; } set { httpTransportBindingElement.ProxyAddress = value; httpsTransportBindingElement.ProxyAddress = value; } } public XmlDictionaryReaderQuotas ReaderQuotas { get { return webMessageEncodingBindingElement.ReaderQuotas; } set { if (value == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("value"); } value.CopyTo(webMessageEncodingBindingElement.ReaderQuotas); } } public override string Scheme { get { return GetTransport().Scheme; } } public WebHttpSecurity Security { get { return this.security; } } public TransferMode TransferMode { get { return httpTransportBindingElement.TransferMode; } set { httpTransportBindingElement.TransferMode = value; httpsTransportBindingElement.TransferMode = value; } } public bool UseDefaultWebProxy { get { return httpTransportBindingElement.UseDefaultWebProxy; } set { httpTransportBindingElement.UseDefaultWebProxy = value; httpsTransportBindingElement.UseDefaultWebProxy = value; } } public Encoding WriteEncoding { get { return webMessageEncodingBindingElement.WriteEncoding; } set { webMessageEncodingBindingElement.WriteEncoding = value; } } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")] // [....], This is the pattern we use on the standard bindings in Indigo V1 bool IBindingRuntimePreferences.ReceiveSynchronously { get { return false; } } public override BindingElementCollection CreateBindingElements() { // return collection of BindingElements BindingElementCollection bindingElements = new BindingElementCollection(); // order of BindingElements is important // add encoding bindingElements.Add(webMessageEncodingBindingElement); // add transport (http or https) bindingElements.Add(GetTransport()); return bindingElements.Clone(); } void ApplyConfiguration(string configurationName) { WebHttpBindingCollectionElement section = WebHttpBindingCollectionElement.GetBindingCollectionElement(); WebHttpBindingElement element = section.Bindings[configurationName]; if (element == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ConfigurationErrorsException( SR2.GetString(SR2.ConfigInvalidBindingConfigurationName, configurationName, WebHttpBindingConfigurationStrings.WebHttpBindingCollectionElementName))); } else { element.ApplyConfiguration(this); } } TransportBindingElement GetTransport() { if (security.Mode == WebHttpSecurityMode.Transport) { security.EnableTransportSecurity(httpsTransportBindingElement); return httpsTransportBindingElement; } else if (security.Mode == WebHttpSecurityMode.TransportCredentialOnly) { security.EnableTransportAuthentication(httpTransportBindingElement); return httpTransportBindingElement; } else { // ensure that there is no transport security security.DisableTransportAuthentication(httpTransportBindingElement); return httpTransportBindingElement; } } void Initialize() { httpTransportBindingElement = new HttpTransportBindingElement(); httpsTransportBindingElement = new HttpsTransportBindingElement(); httpTransportBindingElement.ManualAddressing = true; httpsTransportBindingElement.ManualAddressing = true; webMessageEncodingBindingElement = new WebMessageEncodingBindingElement(); webMessageEncodingBindingElement.MessageVersion = MessageVersion.None; } internal static class WebHttpBindingConfigurationStrings { internal const string WebHttpBindingCollectionElementName = "webHttpBinding"; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- CellIdBoolean.cs
- SeparatorAutomationPeer.cs
- StaticTextPointer.cs
- HtmlShimManager.cs
- LinkDesigner.cs
- TextOnlyOutput.cs
- HttpException.cs
- ScriptResourceMapping.cs
- SafeCryptContextHandle.cs
- TabletCollection.cs
- HostExecutionContextManager.cs
- KeyboardInputProviderAcquireFocusEventArgs.cs
- CompleteWizardStep.cs
- FixedSOMFixedBlock.cs
- SerializationTrace.cs
- SafeHandle.cs
- UriTemplateClientFormatter.cs
- DoubleAnimationClockResource.cs
- Binding.cs
- CompositeFontInfo.cs
- Image.cs
- WebResourceUtil.cs
- BamlStream.cs
- AutoGeneratedField.cs
- UnauthorizedWebPart.cs
- TCEAdapterGenerator.cs
- SimpleExpression.cs
- CompiledIdentityConstraint.cs
- ImageListStreamer.cs
- RedirectionProxy.cs
- DataGridViewCellLinkedList.cs
- ConfigXmlText.cs
- _ScatterGatherBuffers.cs
- SimpleType.cs
- PauseStoryboard.cs
- TextRangeEditTables.cs
- DecoratedNameAttribute.cs
- HttpApplication.cs
- ChannelFactory.cs
- RegisteredDisposeScript.cs
- InProcStateClientManager.cs
- CachedBitmap.cs
- ContractBase.cs
- GridViewSortEventArgs.cs
- RbTree.cs
- ToolStripDropDownClosingEventArgs.cs
- SystemMulticastIPAddressInformation.cs
- ProviderConnectionPointCollection.cs
- SourceFileBuildProvider.cs
- BitmapEffectDrawingContextWalker.cs
- XPathCompileException.cs
- XmlElementAttributes.cs
- FlowDocumentPaginator.cs
- SamlConditions.cs
- TextSerializer.cs
- SetStoryboardSpeedRatio.cs
- DataGridViewCellStyleChangedEventArgs.cs
- DotExpr.cs
- SettingsProperty.cs
- RawAppCommandInputReport.cs
- NextPreviousPagerField.cs
- SerializerDescriptor.cs
- TemplateContentLoader.cs
- DesignerProperties.cs
- HuffModule.cs
- ValueQuery.cs
- TextTreeInsertElementUndoUnit.cs
- DrawingCollection.cs
- SystemIPInterfaceProperties.cs
- TextTreeRootNode.cs
- ColumnHeaderConverter.cs
- Calendar.cs
- ListViewItem.cs
- TypeUnloadedException.cs
- PartialCachingControl.cs
- X509ThumbprintKeyIdentifierClause.cs
- ConfigurationElementCollection.cs
- IndicCharClassifier.cs
- ModelItemCollection.cs
- DateRangeEvent.cs
- ToolStripPanelCell.cs
- WmlPanelAdapter.cs
- State.cs
- ResourceManagerWrapper.cs
- ParallelTimeline.cs
- CacheDependency.cs
- PreProcessor.cs
- AudioException.cs
- AssemblyNameProxy.cs
- TitleStyle.cs
- HandlerBase.cs
- MultiSelectRootGridEntry.cs
- ScaleTransform3D.cs
- WebSysDefaultValueAttribute.cs
- WebPartEditorApplyVerb.cs
- DataServiceRequest.cs
- RelationshipEntry.cs
- IdentityReference.cs
- LabelAutomationPeer.cs
- IxmlLineInfo.cs