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
- SynchronizedMessageSource.cs
- HttpModuleActionCollection.cs
- Grant.cs
- ItemCollection.cs
- ConditionalAttribute.cs
- KoreanLunisolarCalendar.cs
- Decimal.cs
- ListBox.cs
- ACL.cs
- SupportingTokenSecurityTokenResolver.cs
- RadioButton.cs
- Axis.cs
- CurrentTimeZone.cs
- CompilerState.cs
- SchemaLookupTable.cs
- XPathNavigatorKeyComparer.cs
- CustomError.cs
- EventArgs.cs
- CultureInfoConverter.cs
- DbConnectionStringBuilder.cs
- Brush.cs
- Event.cs
- TypeReference.cs
- CompilerParameters.cs
- RootBuilder.cs
- EndpointIdentity.cs
- TextDpi.cs
- SqlNodeTypeOperators.cs
- OverflowException.cs
- GridViewRowCollection.cs
- RSAPKCS1SignatureFormatter.cs
- HistoryEventArgs.cs
- RoutedCommand.cs
- NGCSerializerAsync.cs
- Selection.cs
- invalidudtexception.cs
- EntityDataSourceUtil.cs
- TemplateControlBuildProvider.cs
- DefinitionUpdate.cs
- TextBox.cs
- DbModificationClause.cs
- WeakReferenceKey.cs
- FileDialogPermission.cs
- FactoryGenerator.cs
- UnsafeNativeMethods.cs
- Image.cs
- CategoryGridEntry.cs
- ImageMap.cs
- OrderedDictionary.cs
- WindowHideOrCloseTracker.cs
- TextAdaptor.cs
- ConnectionInterfaceCollection.cs
- StylusPointPropertyInfoDefaults.cs
- SrgsDocumentParser.cs
- UnitySerializationHolder.cs
- SafeCertificateContext.cs
- ObjectItemCollectionAssemblyCacheEntry.cs
- Mapping.cs
- QuaternionKeyFrameCollection.cs
- Renderer.cs
- ComMethodElementCollection.cs
- DataListItem.cs
- XmlBindingWorker.cs
- XsdCachingReader.cs
- HtmlElement.cs
- RoleManagerModule.cs
- CompilationRelaxations.cs
- WebServiceTypeData.cs
- GridViewColumnCollection.cs
- KoreanLunisolarCalendar.cs
- AuthenticationServiceManager.cs
- HtmlElement.cs
- SmiMetaDataProperty.cs
- ProtocolsConfigurationEntry.cs
- DataBindingHandlerAttribute.cs
- BamlRecordHelper.cs
- DesignerUtility.cs
- ErrorEventArgs.cs
- ArgumentOutOfRangeException.cs
- MailMessage.cs
- UDPClient.cs
- SoapMessage.cs
- HMACSHA512.cs
- RadioButton.cs
- ValidatingPropertiesEventArgs.cs
- XmlSchemaAppInfo.cs
- TargetParameterCountException.cs
- IPGlobalProperties.cs
- DrawListViewColumnHeaderEventArgs.cs
- ParserHooks.cs
- ReflectionTypeLoadException.cs
- IndentTextWriter.cs
- EnglishPluralizationService.cs
- RowSpanVector.cs
- SimpleTableProvider.cs
- InfoCardClaimCollection.cs
- XmlSchemaImporter.cs
- TitleStyle.cs
- DataGridPreparingCellForEditEventArgs.cs
- MethodCallTranslator.cs