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
- FixedTextView.cs
- Select.cs
- LateBoundBitmapDecoder.cs
- XmlElementList.cs
- VideoDrawing.cs
- PageParserFilter.cs
- HitTestFilterBehavior.cs
- KerberosTicketHashIdentifierClause.cs
- InputLanguageProfileNotifySink.cs
- AuthStoreRoleProvider.cs
- UrlAuthFailedErrorFormatter.cs
- WizardStepBase.cs
- MetadataCacheItem.cs
- ProviderCollection.cs
- HttpResponse.cs
- Label.cs
- MeshGeometry3D.cs
- ExtentKey.cs
- ViewCellRelation.cs
- WebHeaderCollection.cs
- TreeIterators.cs
- PowerModeChangedEventArgs.cs
- PolyBezierSegment.cs
- ContentWrapperAttribute.cs
- BooleanSwitch.cs
- OrderedDictionaryStateHelper.cs
- WebPartDescription.cs
- SqlUDTStorage.cs
- Int16.cs
- WorkflowIdleBehavior.cs
- PaperSource.cs
- ConnectionStringSettings.cs
- Stylesheet.cs
- XmlCharCheckingReader.cs
- OdbcConnectionStringbuilder.cs
- EventLog.cs
- ComponentFactoryHelpers.cs
- LayoutEvent.cs
- TimeSpanStorage.cs
- DbParameterCollectionHelper.cs
- ProcessHostConfigUtils.cs
- DataColumnMapping.cs
- ControlAdapter.cs
- TraceListener.cs
- CompositeClientFormatter.cs
- BamlResourceContent.cs
- HandlerBase.cs
- RowBinding.cs
- Graph.cs
- FrameworkRichTextComposition.cs
- HuffCodec.cs
- Queue.cs
- FindCriteriaCD1.cs
- WebDisplayNameAttribute.cs
- TableCell.cs
- ServiceDescriptionSerializer.cs
- DependencyPropertyConverter.cs
- IPeerNeighbor.cs
- SupportingTokenDuplexChannel.cs
- Buffer.cs
- QualificationDataItem.cs
- NativeMethodsCLR.cs
- FamilyTypefaceCollection.cs
- ReflectionTypeLoadException.cs
- WorkflowRequestContext.cs
- WaveHeader.cs
- SqlNode.cs
- FileUtil.cs
- XmlDataSourceNodeDescriptor.cs
- DispatcherHookEventArgs.cs
- counter.cs
- ExclusiveTcpListener.cs
- MatcherBuilder.cs
- NetworkInformationException.cs
- UTF7Encoding.cs
- FileChangesMonitor.cs
- ListViewInsertedEventArgs.cs
- ObjectMaterializedEventArgs.cs
- WebBrowserPermission.cs
- DataChangedEventManager.cs
- ActivationProxy.cs
- GlyphingCache.cs
- SectionUpdates.cs
- DocumentScope.cs
- ArithmeticException.cs
- ScriptManagerProxy.cs
- ProvidersHelper.cs
- COAUTHINFO.cs
- DriveNotFoundException.cs
- ByteStreamGeometryContext.cs
- ParserStreamGeometryContext.cs
- CanExpandCollapseAllConverter.cs
- RequiredAttributeAttribute.cs
- PropertyMap.cs
- RsaElement.cs
- CodeLabeledStatement.cs
- ConnectionsZone.cs
- GeometryConverter.cs
- Lock.cs
- WeakReference.cs