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
- ProxySimple.cs
- DataServiceProcessingPipelineEventArgs.cs
- ProvideValueServiceProvider.cs
- Symbol.cs
- BatchParser.cs
- WebBrowserSiteBase.cs
- RangeContentEnumerator.cs
- BitmapScalingModeValidation.cs
- MarshalByValueComponent.cs
- EdmRelationshipRoleAttribute.cs
- PageContentAsyncResult.cs
- ExtendedPropertyCollection.cs
- MouseGesture.cs
- FontStyles.cs
- TextFormatter.cs
- FixedSOMContainer.cs
- ReferentialConstraint.cs
- DataGridItemCollection.cs
- MatrixStack.cs
- HwndSource.cs
- EdmItemError.cs
- IndentTextWriter.cs
- RtfControls.cs
- FeedUtils.cs
- BaseDataListActionList.cs
- SqlDataSourceQueryEditor.cs
- SoapAttributeAttribute.cs
- PropertyChangingEventArgs.cs
- COM2ExtendedUITypeEditor.cs
- SchemaNames.cs
- XamlVector3DCollectionSerializer.cs
- XmlLinkedNode.cs
- DeadLetterQueue.cs
- SqlCommandSet.cs
- BaseTemplateParser.cs
- FlatButtonAppearance.cs
- PocoEntityKeyStrategy.cs
- OleDbPermission.cs
- RijndaelManagedTransform.cs
- invalidudtexception.cs
- ConfigXmlText.cs
- AppliedDeviceFiltersDialog.cs
- RepeatButton.cs
- BamlLocalizer.cs
- LOSFormatter.cs
- InteropAutomationProvider.cs
- ScriptRegistrationManager.cs
- HttpCacheVaryByContentEncodings.cs
- InfoCardTrace.cs
- EmptyImpersonationContext.cs
- GeometryHitTestParameters.cs
- TimeSpanMinutesOrInfiniteConverter.cs
- TdsParserStaticMethods.cs
- BaseCollection.cs
- SqlCacheDependencyDatabase.cs
- ColorConvertedBitmapExtension.cs
- MailWriter.cs
- TextTreeText.cs
- ObjectNotFoundException.cs
- SafeThreadHandle.cs
- ReadOnlyDataSourceView.cs
- InternalsVisibleToAttribute.cs
- XamlPointCollectionSerializer.cs
- _IPv4Address.cs
- activationcontext.cs
- FontUnit.cs
- KeyProperty.cs
- Schema.cs
- AlignmentYValidation.cs
- MatrixAnimationBase.cs
- Helper.cs
- EndOfStreamException.cs
- Group.cs
- DBCommandBuilder.cs
- TripleDESCryptoServiceProvider.cs
- VirtualDirectoryMappingCollection.cs
- ObjectStateEntry.cs
- DispatchChannelSink.cs
- ApplicationServicesHostFactory.cs
- ScriptBehaviorDescriptor.cs
- ViewGenerator.cs
- AppDomainCompilerProxy.cs
- IisNotInstalledException.cs
- LinkLabelLinkClickedEvent.cs
- CommandHelper.cs
- returneventsaver.cs
- SqlGatherProducedAliases.cs
- SchemaImporterExtensionsSection.cs
- DataRowCollection.cs
- Light.cs
- HtmlLink.cs
- TableLayoutSettingsTypeConverter.cs
- DoubleKeyFrameCollection.cs
- FormViewPagerRow.cs
- filewebrequest.cs
- LayoutManager.cs
- ChameleonKey.cs
- SpecialTypeDataContract.cs
- LZCodec.cs
- BindingsCollection.cs