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
- MissingMethodException.cs
- Point3DConverter.cs
- ImageField.cs
- RequestQueryProcessor.cs
- UnmanagedMarshal.cs
- SetterBase.cs
- IdentityHolder.cs
- CombinedGeometry.cs
- PassportIdentity.cs
- SemanticBasicElement.cs
- ChineseLunisolarCalendar.cs
- ServiceNameCollection.cs
- CacheOutputQuery.cs
- ManagementException.cs
- OracleSqlParser.cs
- StylusPointProperty.cs
- EntityContainerAssociationSet.cs
- CustomAttributeFormatException.cs
- ContextDataSource.cs
- SafeThemeHandle.cs
- OneOfScalarConst.cs
- RewritingValidator.cs
- BindingCollection.cs
- TypeContext.cs
- FileDialog_Vista.cs
- MetadataFile.cs
- ConfigXmlSignificantWhitespace.cs
- WebPartsSection.cs
- SoapServerMethod.cs
- ActiveXSerializer.cs
- TextElementCollectionHelper.cs
- FillBehavior.cs
- XmlTextWriter.cs
- GroupBox.cs
- XmlExpressionDumper.cs
- Decorator.cs
- ConnectionManagementElement.cs
- AndAlso.cs
- SqlMultiplexer.cs
- DataGridViewRowHeightInfoNeededEventArgs.cs
- StrokeIntersection.cs
- CellLabel.cs
- CheckBoxAutomationPeer.cs
- DbParameterHelper.cs
- ISAPIRuntime.cs
- FilteredDataSetHelper.cs
- ErrorProvider.cs
- XmlEncoding.cs
- HostDesigntimeLicenseContext.cs
- ListBindingHelper.cs
- InitializationEventAttribute.cs
- AssociationTypeEmitter.cs
- NamedPipeHostedTransportConfiguration.cs
- TrackingStringDictionary.cs
- Array.cs
- MarshalByRefObject.cs
- SqlXmlStorage.cs
- SqlTypesSchemaImporter.cs
- LiteralControl.cs
- LabelLiteral.cs
- StylusLogic.cs
- CollectionCodeDomSerializer.cs
- CommandHelpers.cs
- GroupBoxRenderer.cs
- MaterialCollection.cs
- ItemsPresenter.cs
- OracleTransaction.cs
- ITreeGenerator.cs
- SecurityTokenValidationException.cs
- HostingEnvironmentWrapper.cs
- DebuggerAttributes.cs
- WebUtil.cs
- GridViewActionList.cs
- HttpTransportSecurityElement.cs
- ClusterRegistryConfigurationProvider.cs
- JsonStringDataContract.cs
- HttpCachePolicyElement.cs
- SqlBuilder.cs
- FigureHelper.cs
- XmlCharCheckingWriter.cs
- AlternateView.cs
- HttpCapabilitiesSectionHandler.cs
- WebPartManagerDesigner.cs
- QilFunction.cs
- PlaceHolder.cs
- FunctionParameter.cs
- mansign.cs
- ApplicationGesture.cs
- AnnotationHelper.cs
- MsiStyleLogWriter.cs
- GenericXmlSecurityToken.cs
- WebEventTraceProvider.cs
- WebPartDisplayModeEventArgs.cs
- ListSortDescription.cs
- LicenseProviderAttribute.cs
- _SSPIWrapper.cs
- EntityContainerRelationshipSet.cs
- XmlBindingWorker.cs
- FragmentQueryKB.cs
- CatalogZone.cs