Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx35 / System.ServiceModel.Web / System / ServiceModel / WebHttpBinding.cs / 1305376 / 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; using System.ComponentModel; public class WebHttpBinding : Binding, IBindingRuntimePreferences { HttpsTransportBindingElement httpsTransportBindingElement; // private BindingElements HttpTransportBindingElement httpTransportBindingElement; WebHttpSecurity security = new WebHttpSecurity(); WebMessageEncodingBindingElement webMessageEncodingBindingElement; public WebHttpBinding() : base() { Initialize(); } public WebHttpBinding(string configurationName) : this() { ApplyConfiguration(configurationName); } public WebHttpBinding(WebHttpSecurityMode securityMode) : base() { Initialize(); this.security.Mode = securityMode; } [DefaultValue(HttpTransportDefaults.AllowCookies)] public bool AllowCookies { get { return httpTransportBindingElement.AllowCookies; } set { httpTransportBindingElement.AllowCookies = value; httpsTransportBindingElement.AllowCookies = value; } } [DefaultValue(HttpTransportDefaults.BypassProxyOnLocal)] public bool BypassProxyOnLocal { get { return httpTransportBindingElement.BypassProxyOnLocal; } set { httpTransportBindingElement.BypassProxyOnLocal = value; httpsTransportBindingElement.BypassProxyOnLocal = value; } } public EnvelopeVersion EnvelopeVersion { get { return EnvelopeVersion.None; } } [DefaultValue(HttpTransportDefaults.HostNameComparisonMode)] public HostNameComparisonMode HostNameComparisonMode { get { return httpTransportBindingElement.HostNameComparisonMode; } set { httpTransportBindingElement.HostNameComparisonMode = value; httpsTransportBindingElement.HostNameComparisonMode = value; } } [DefaultValue(TransportDefaults.MaxBufferPoolSize)] public long MaxBufferPoolSize { get { return httpTransportBindingElement.MaxBufferPoolSize; } set { httpTransportBindingElement.MaxBufferPoolSize = value; httpsTransportBindingElement.MaxBufferPoolSize = value; } } [DefaultValue(TransportDefaults.MaxBufferSize)] public int MaxBufferSize { get { return httpTransportBindingElement.MaxBufferSize; } set { httpTransportBindingElement.MaxBufferSize = value; httpsTransportBindingElement.MaxBufferSize = value; } } [DefaultValue(TransportDefaults.MaxReceivedMessageSize)] public long MaxReceivedMessageSize { get { return httpTransportBindingElement.MaxReceivedMessageSize; } set { httpTransportBindingElement.MaxReceivedMessageSize = value; httpsTransportBindingElement.MaxReceivedMessageSize = value; } } [DefaultValue(HttpTransportDefaults.ProxyAddress)] 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; } set { if (value == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("value"); this.security = value; } } [DefaultValue(HttpTransportDefaults.TransferMode)] public TransferMode TransferMode { get { return httpTransportBindingElement.TransferMode; } set { httpTransportBindingElement.TransferMode = value; httpsTransportBindingElement.TransferMode = value; } } [DefaultValue(HttpTransportDefaults.UseDefaultWebProxy)] public bool UseDefaultWebProxy { get { return httpTransportBindingElement.UseDefaultWebProxy; } set { httpTransportBindingElement.UseDefaultWebProxy = value; httpsTransportBindingElement.UseDefaultWebProxy = value; } } [TypeConverter(typeof(EncodingConverter))] public Encoding WriteEncoding { get { return webMessageEncodingBindingElement.WriteEncoding; } set { webMessageEncodingBindingElement.WriteEncoding = value; } } public WebContentTypeMapper ContentTypeMapper { get { return webMessageEncodingBindingElement.ContentTypeMapper; } set { webMessageEncodingBindingElement.ContentTypeMapper = value; } } public bool CrossDomainScriptAccessEnabled { get { return webMessageEncodingBindingElement.CrossDomainScriptAccessEnabled; } set { webMessageEncodingBindingElement.CrossDomainScriptAccessEnabled = 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"; } [EditorBrowsable(EditorBrowsableState.Never)] public bool ShouldSerializeReaderQuotas() { return (!EncoderDefaults.IsDefaultReaderQuotas(this.ReaderQuotas)); } [EditorBrowsable(EditorBrowsableState.Never)] public bool ShouldSerializeWriteEncoding() { return (this.WriteEncoding != TextEncoderDefaults.Encoding); } [EditorBrowsable(EditorBrowsableState.Never)] public bool ShouldSerializeSecurity() { return Security.InternalShouldSerialize(); } } } // 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
- TypedAsyncResult.cs
- SurrogateDataContract.cs
- LongTypeConverter.cs
- NativeMethods.cs
- RightsManagementInformation.cs
- SocketPermission.cs
- DrawingCollection.cs
- GradientStop.cs
- webclient.cs
- UpWmlPageAdapter.cs
- Calendar.cs
- SafeIUnknown.cs
- TransformProviderWrapper.cs
- EpmCustomContentSerializer.cs
- EventlogProvider.cs
- ProcessStartInfo.cs
- HandleCollector.cs
- XmlSchemaAttribute.cs
- SoapCommonClasses.cs
- Point3DConverter.cs
- PropertyEntry.cs
- ImageList.cs
- RowToFieldTransformer.cs
- GlyphRun.cs
- FileChangesMonitor.cs
- RegexCapture.cs
- MonthCalendar.cs
- CreateUserWizard.cs
- ClientRuntimeConfig.cs
- ListViewItem.cs
- XPathAncestorIterator.cs
- FigureParagraph.cs
- DesignColumnCollection.cs
- FileVersion.cs
- TemplateBindingExpressionConverter.cs
- SAPICategories.cs
- TextElementAutomationPeer.cs
- InfoCardTraceRecord.cs
- DrawingContextDrawingContextWalker.cs
- SessionEndedEventArgs.cs
- AssemblyCollection.cs
- ComponentSerializationService.cs
- XsltQilFactory.cs
- HeaderElement.cs
- EncryptedData.cs
- ConstrainedDataObject.cs
- ProcessProtocolHandler.cs
- VerificationAttribute.cs
- PasswordPropertyTextAttribute.cs
- XLinq.cs
- QueryCreatedEventArgs.cs
- TrackingParticipant.cs
- Image.cs
- EmptyElement.cs
- WebPartConnectionsCloseVerb.cs
- DesignerVerbToolStripMenuItem.cs
- RegistryConfigurationProvider.cs
- ColorAnimation.cs
- ResourceCollectionInfo.cs
- SimpleHandlerFactory.cs
- SystemIPGlobalStatistics.cs
- GeometryModel3D.cs
- cache.cs
- BypassElementCollection.cs
- DrawTreeNodeEventArgs.cs
- FunctionQuery.cs
- basemetadatamappingvisitor.cs
- EncryptedReference.cs
- DataGridViewImageCell.cs
- CLRBindingWorker.cs
- ReferenceAssemblyAttribute.cs
- SymbolDocumentInfo.cs
- StylusPointPropertyUnit.cs
- ColorAnimationUsingKeyFrames.cs
- TemplateInstanceAttribute.cs
- relpropertyhelper.cs
- TaskFactory.cs
- DomNameTable.cs
- _AutoWebProxyScriptEngine.cs
- XmlQualifiedNameTest.cs
- Funcletizer.cs
- SmtpSection.cs
- COSERVERINFO.cs
- RsaKeyIdentifierClause.cs
- RawStylusSystemGestureInputReport.cs
- XamlPointCollectionSerializer.cs
- SqlTrackingWorkflowInstance.cs
- WSDualHttpSecurityMode.cs
- XpsFont.cs
- XMLSchema.cs
- Property.cs
- TemplateControl.cs
- SamlAssertionKeyIdentifierClause.cs
- ConnectionPointCookie.cs
- querybuilder.cs
- JpegBitmapEncoder.cs
- XamlFigureLengthSerializer.cs
- HandlerFactoryWrapper.cs
- ParallelTimeline.cs
- XmlConvert.cs