Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Dispatcher / PeerValidationBehavior.cs / 1 / PeerValidationBehavior.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.ServiceModel.Dispatcher { using System.ServiceModel.Channels; using System.ServiceModel; using System.ServiceModel.Description; using System.Collections.ObjectModel; using System.Collections.Generic; class PeerValidationBehavior : IEndpointBehavior, IServiceBehavior { public static PeerValidationBehavior Instance { get { if (instance == null) instance = new PeerValidationBehavior(); return instance; } } static PeerValidationBehavior instance; PeerValidationBehavior() {} static bool IsRequestReplyContract(ContractDescription contract) { bool requestReply = false; foreach (OperationDescription operation in contract.Operations) { if (operation.Messages.Count > 1) // Request-reply { requestReply = true; break; } } return requestReply; } void IEndpointBehavior.Validate(ServiceEndpoint serviceEndpoint) { if (serviceEndpoint == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("serviceEndpoint"); ContractDescription contract = serviceEndpoint.Contract; Binding binding = serviceEndpoint.Binding; ValidateHelper(contract, binding); } void IEndpointBehavior.AddBindingParameters(ServiceEndpoint serviceEndpoint, BindingParameterCollection bindingParameters) { } void IEndpointBehavior.ApplyDispatchBehavior(ServiceEndpoint serviceEndpoint, EndpointDispatcher endpointDispatcher) { } void IEndpointBehavior.ApplyClientBehavior(ServiceEndpoint serviceEndpoint, ClientRuntime behavior) { } void IServiceBehavior.AddBindingParameters(ServiceDescription description, ServiceHostBase serviceHostBase, Collectionendpoints, BindingParameterCollection parameters) { } void IServiceBehavior.ApplyDispatchBehavior(ServiceDescription description, ServiceHostBase serviceHostBase) { } void IServiceBehavior.Validate(ServiceDescription description, ServiceHostBase serviceHostBase) { if (description == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("description"); for (int i = 0; i < description.Endpoints.Count; i++) { ServiceEndpoint endpoint = description.Endpoints[i]; ValidateHelper(endpoint.Contract, endpoint.Binding); } } // SM doesn't support request-reply message pattern over multi-point channels correctly, so, disabling // request-reply for NetPeerTcpBinding. (Advanced users may find a way to implement request-reply over // a CustomBinding that includes PeerTransportBE.) void ValidateHelper(ContractDescription contract, Binding binding) { if (binding is NetPeerTcpBinding && IsRequestReplyContract(contract)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException( SR.GetString(SR.BindingDoesnTSupportRequestReplyButContract1, binding.Name))); } } } } // 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
- ZipIOLocalFileBlock.cs
- PrintSystemException.cs
- SimpleHandlerBuildProvider.cs
- DesignerToolStripControlHost.cs
- ObjectContextServiceProvider.cs
- KeyTimeConverter.cs
- ConfigViewGenerator.cs
- ShaderEffect.cs
- PageThemeParser.cs
- XsltArgumentList.cs
- FormViewDeletedEventArgs.cs
- TokenBasedSet.cs
- Simplifier.cs
- CodeObjectCreateExpression.cs
- BuildProvider.cs
- HostingPreferredMapPath.cs
- SchemaImporterExtension.cs
- ProgressBarAutomationPeer.cs
- StaticResourceExtension.cs
- GorillaCodec.cs
- SqlTypeConverter.cs
- BitConverter.cs
- EmptyEnumerator.cs
- Operators.cs
- MatrixTransform.cs
- XmlElementAttributes.cs
- CaseInsensitiveHashCodeProvider.cs
- LinearGradientBrush.cs
- UrlMappingsSection.cs
- EntityCommand.cs
- FilterException.cs
- CallSiteHelpers.cs
- RemoteArgument.cs
- DocumentViewer.cs
- InvokeBinder.cs
- ViewCellRelation.cs
- TableLayout.cs
- InsufficientMemoryException.cs
- Query.cs
- SortedDictionary.cs
- CodeBlockBuilder.cs
- ValueTypeFixupInfo.cs
- MimeObjectFactory.cs
- TimeManager.cs
- CodeAttributeDeclaration.cs
- CounterCreationData.cs
- GZipStream.cs
- FixedPosition.cs
- SingleAnimation.cs
- BitmapImage.cs
- HighContrastHelper.cs
- SoapServerMessage.cs
- TextView.cs
- GridViewCancelEditEventArgs.cs
- PermissionListSet.cs
- ProcessStartInfo.cs
- SoapTypeAttribute.cs
- SessionStateContainer.cs
- PermissionSet.cs
- ButtonBaseDesigner.cs
- ConfigXmlText.cs
- SparseMemoryStream.cs
- LabelAutomationPeer.cs
- SizeAnimation.cs
- CodeActivity.cs
- GenerateTemporaryTargetAssembly.cs
- XmlEventCache.cs
- PreservationFileReader.cs
- ScriptBehaviorDescriptor.cs
- StreamGeometry.cs
- FirstMatchCodeGroup.cs
- StringBuilder.cs
- SupportsPreviewControlAttribute.cs
- XsltQilFactory.cs
- IntAverageAggregationOperator.cs
- XmlUtf8RawTextWriter.cs
- InternalsVisibleToAttribute.cs
- InteropAutomationProvider.cs
- SelectionRange.cs
- securitycriticaldataformultiplegetandset.cs
- FullTextBreakpoint.cs
- ProvidersHelper.cs
- ProjectionQueryOptionExpression.cs
- Helpers.cs
- SplitContainerDesigner.cs
- PointAnimation.cs
- SimpleMailWebEventProvider.cs
- storagemappingitemcollection.viewdictionary.cs
- RSAPKCS1SignatureFormatter.cs
- PtsHost.cs
- QilScopedVisitor.cs
- DataServiceBuildProvider.cs
- QueryReaderSettings.cs
- TextFormatterImp.cs
- CompositeFontParser.cs
- X509ChainPolicy.cs
- AnimatedTypeHelpers.cs
- RegisteredDisposeScript.cs
- AdapterDictionary.cs
- util.cs