Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / MsmqIntegration / MsmqIntegrationValidationBehavior.cs / 1 / MsmqIntegrationValidationBehavior.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.ServiceModel.MsmqIntegration { using System.ServiceModel; using System.ServiceModel.Dispatcher; using System.ServiceModel.Description; using System.ServiceModel.Channels; using System.Collections.ObjectModel; using System.Collections.Generic; class MsmqIntegrationValidationBehavior : IEndpointBehavior, IServiceBehavior { static MsmqIntegrationValidationBehavior instance; internal static MsmqIntegrationValidationBehavior Instance { get { if (instance == null) instance = new MsmqIntegrationValidationBehavior(); return instance; } } MsmqIntegrationValidationBehavior() {} void IEndpointBehavior.Validate(ServiceEndpoint serviceEndpoint) { if (serviceEndpoint == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("serviceEndpoint"); ContractDescription contract = serviceEndpoint.Contract; Binding binding = serviceEndpoint.Binding; if (NeedValidateBinding(binding)) { ValidateHelper(contract, binding, null); } } 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]; if (NeedValidateBinding(endpoint.Binding)) { ValidateHelper(endpoint.Contract, endpoint.Binding, description); break; } } } bool NeedValidateBinding(Binding binding) { if (binding is MsmqIntegrationBinding) return true; if (binding is CustomBinding) { CustomBinding customBinding = new CustomBinding(binding); return (customBinding.Elements.Find () != null); } return false; } void ValidateHelper(ContractDescription contract, Binding binding, ServiceDescription description) { foreach(OperationDescription operation in contract.Operations) { // since this is one-way, we can only have one message (one-way requirement is validated elsewhere) MessageDescription message = operation.Messages[0]; if ((message.Body.Parts.Count == 0) && (message.Headers.Count == 0)) // all message parts are properties, great continue; if (message.Body.Parts.Count == 1) // Single MsmqMessage<> argument is also legal { Type type = message.Body.Parts[0].Type; if (type.IsGenericType && (type.GetGenericTypeDefinition() == typeof(MsmqMessage<>))) continue; } throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException( SR.GetString(SR.MsmqInvalidServiceOperationForMsmqIntegrationBinding, binding.Name, operation.Name, contract.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
- ProtocolsSection.cs
- HostUtils.cs
- ProxyElement.cs
- CuspData.cs
- ImageAnimator.cs
- MetadataItem_Static.cs
- HandlerBase.cs
- Int32CollectionValueSerializer.cs
- SafeMemoryMappedViewHandle.cs
- DbgCompiler.cs
- ChtmlTextWriter.cs
- RequiredFieldValidator.cs
- StrongNamePublicKeyBlob.cs
- IconBitmapDecoder.cs
- StylusPointPropertyInfo.cs
- ResXFileRef.cs
- EntityDataSourceWizardForm.cs
- ThreadExceptionEvent.cs
- XdrBuilder.cs
- Pair.cs
- WorkflowApplicationAbortedException.cs
- RemotingSurrogateSelector.cs
- OleDbException.cs
- Profiler.cs
- CaseInsensitiveOrdinalStringComparer.cs
- MsmqInputChannelBase.cs
- ToolStripHighContrastRenderer.cs
- DispatcherHooks.cs
- FrameDimension.cs
- CellTreeNodeVisitors.cs
- StylusPointCollection.cs
- UpdatableGenericsFeature.cs
- ByteAnimationUsingKeyFrames.cs
- MenuItemBindingCollection.cs
- ScriptHandlerFactory.cs
- BindingManagerDataErrorEventArgs.cs
- RolePrincipal.cs
- Attributes.cs
- GlyphingCache.cs
- FilteredXmlReader.cs
- TreeWalker.cs
- ApplicationSecurityInfo.cs
- TextEditorSpelling.cs
- HierarchicalDataBoundControl.cs
- RoleServiceManager.cs
- LookupTables.cs
- AggregateException.cs
- Color.cs
- PixelShader.cs
- clipboard.cs
- XamlSerializationHelper.cs
- ErrorFormatterPage.cs
- DBSchemaTable.cs
- XslCompiledTransform.cs
- DateBoldEvent.cs
- SrgsGrammarCompiler.cs
- DESCryptoServiceProvider.cs
- PeerInvitationResponse.cs
- TypeElement.cs
- UnsafeNativeMethods.cs
- FontFamilyConverter.cs
- CanonicalXml.cs
- Odbc32.cs
- RecognizeCompletedEventArgs.cs
- SqlWebEventProvider.cs
- HttpResponseHeader.cs
- EmptyEnumerable.cs
- TcpConnectionPoolSettings.cs
- SqlInternalConnectionSmi.cs
- Bind.cs
- RangeBaseAutomationPeer.cs
- ObjectDataSource.cs
- _NetworkingPerfCounters.cs
- PropertyToken.cs
- UnaryNode.cs
- X509Extension.cs
- InputReportEventArgs.cs
- DbModificationCommandTree.cs
- SelectionPatternIdentifiers.cs
- XslTransform.cs
- TreeIterator.cs
- ByteStream.cs
- SQLRoleProvider.cs
- GenericEnumerator.cs
- XmlQueryContext.cs
- LightweightCodeGenerator.cs
- ObjectView.cs
- Point4DConverter.cs
- SqlMetaData.cs
- FirstMatchCodeGroup.cs
- MailDefinition.cs
- TemplateKey.cs
- BitmapEffectInput.cs
- SerialPinChanges.cs
- MediaPlayer.cs
- ProfileGroupSettings.cs
- UIElement3D.cs
- AuthenticationSection.cs
- MatrixAnimationUsingKeyFrames.cs
- PackWebResponse.cs