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
- ConfigurationElementCollection.cs
- SuppressMessageAttribute.cs
- WindowsUpDown.cs
- UdpUtility.cs
- ColumnResult.cs
- CriticalHandle.cs
- FixedHyperLink.cs
- HtmlHead.cs
- AttachedPropertyMethodSelector.cs
- PersonalizationStateQuery.cs
- WebGetAttribute.cs
- StoryFragments.cs
- SelectionEditingBehavior.cs
- StandardOleMarshalObject.cs
- WorkflowShape.cs
- FontUnitConverter.cs
- CombinedGeometry.cs
- AutoResizedEvent.cs
- SatelliteContractVersionAttribute.cs
- AuthStoreRoleProvider.cs
- XamlToRtfWriter.cs
- Rijndael.cs
- CopyAction.cs
- WindowsSolidBrush.cs
- DataGridTableStyleMappingNameEditor.cs
- RightsManagementInformation.cs
- DocobjHost.cs
- HtmlTableRow.cs
- DatagridviewDisplayedBandsData.cs
- UIElementCollection.cs
- AttachmentCollection.cs
- TextBoxRenderer.cs
- TdsEnums.cs
- ExpressionHelper.cs
- LeftCellWrapper.cs
- SmiEventSink.cs
- MultiplexingDispatchMessageFormatter.cs
- WindowInteractionStateTracker.cs
- ObjectListShowCommandsEventArgs.cs
- SubMenuStyle.cs
- DataContractSerializerOperationBehavior.cs
- OleDbCommand.cs
- DefaultHttpHandler.cs
- AxHostDesigner.cs
- SiteMapDataSource.cs
- CompositeFontInfo.cs
- ProcessModuleCollection.cs
- XmlSchemaImporter.cs
- ToolZone.cs
- CopyAction.cs
- TreeNodeMouseHoverEvent.cs
- SoapMessage.cs
- BinaryFormatterWriter.cs
- BrowserCapabilitiesCodeGenerator.cs
- BaseCodePageEncoding.cs
- OutOfProcStateClientManager.cs
- UpdateRecord.cs
- HatchBrush.cs
- _ConnectStream.cs
- counter.cs
- Keyboard.cs
- WriteableBitmap.cs
- XmlText.cs
- InvalidateEvent.cs
- SourceLineInfo.cs
- CurrentChangedEventManager.cs
- DataGridViewColumnCollectionDialog.cs
- httpapplicationstate.cs
- ArrayConverter.cs
- RelationshipFixer.cs
- TextParaClient.cs
- FirstMatchCodeGroup.cs
- LoaderAllocator.cs
- InvalidFilterCriteriaException.cs
- CurrencyManager.cs
- UnsafeNativeMethods.cs
- CollectionViewGroupRoot.cs
- TextComposition.cs
- ConstructorNeedsTagAttribute.cs
- CancelEventArgs.cs
- ListenDesigner.cs
- FormViewUpdateEventArgs.cs
- BaseCollection.cs
- ImageField.cs
- ContainsRowNumberChecker.cs
- DataIdProcessor.cs
- validation.cs
- ContextProperty.cs
- WebPartCancelEventArgs.cs
- FlowLayoutSettings.cs
- GeneralTransform3DCollection.cs
- WebBrowser.cs
- MetadataSource.cs
- MeshGeometry3D.cs
- DataShape.cs
- PolyLineSegment.cs
- DbXmlEnabledProviderManifest.cs
- HitTestResult.cs
- WorkflowMarkupSerializer.cs
- DebugView.cs