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
- SafeNativeMethods.cs
- ButtonPopupAdapter.cs
- TextBreakpoint.cs
- ChannelManagerHelpers.cs
- DtrList.cs
- SettingsPropertyCollection.cs
- XmlSchemaElement.cs
- Rect3DConverter.cs
- TcpClientChannel.cs
- CheckBoxStandardAdapter.cs
- MailMessage.cs
- DataGridPageChangedEventArgs.cs
- DataGridPagerStyle.cs
- LinkButton.cs
- EndpointDiscoveryMetadataCD1.cs
- SByte.cs
- DataColumn.cs
- CachedCompositeFamily.cs
- Utility.cs
- AspProxy.cs
- TextTreeDeleteContentUndoUnit.cs
- FontWeight.cs
- AnnotationResource.cs
- PipelineModuleStepContainer.cs
- InputDevice.cs
- ContentIterators.cs
- HttpModuleAction.cs
- Bold.cs
- TypeDelegator.cs
- ImageUrlEditor.cs
- RadioButton.cs
- SqlNodeAnnotation.cs
- XXXInfos.cs
- XmlAnyAttributeAttribute.cs
- XmlSchemaAnyAttribute.cs
- BitmapMetadataEnumerator.cs
- SessionSwitchEventArgs.cs
- PropertyInfoSet.cs
- SizeLimitedCache.cs
- XmlAttributeCache.cs
- ModelTreeEnumerator.cs
- AppDomainGrammarProxy.cs
- PackagePart.cs
- OdbcException.cs
- EmbeddedMailObjectsCollection.cs
- CombinedGeometry.cs
- Helper.cs
- GreenMethods.cs
- UnsafeNativeMethods.cs
- LabelDesigner.cs
- TemplateKey.cs
- SiteMapPath.cs
- Region.cs
- StylusPoint.cs
- CodeNamespace.cs
- Track.cs
- EqualityComparer.cs
- TraceHandlerErrorFormatter.cs
- ActivityTypeDesigner.xaml.cs
- RuleSetCollection.cs
- WebEventCodes.cs
- NTAccount.cs
- BindingCompleteEventArgs.cs
- ExpandCollapseProviderWrapper.cs
- HyperLink.cs
- BatchParser.cs
- MemberAccessException.cs
- ToolboxComponentsCreatingEventArgs.cs
- AssociationProvider.cs
- ValidationEventArgs.cs
- contentDescriptor.cs
- PersonalizationProviderCollection.cs
- ConstNode.cs
- DocumentViewerHelper.cs
- XDRSchema.cs
- ScheduleChanges.cs
- IImplicitResourceProvider.cs
- StylusPointCollection.cs
- GridViewUpdateEventArgs.cs
- VarRemapper.cs
- NameValueConfigurationElement.cs
- SqlConnectionManager.cs
- MimeBasePart.cs
- ConnectionPoint.cs
- SchemaInfo.cs
- ValidatingReaderNodeData.cs
- NotImplementedException.cs
- GlyphingCache.cs
- CodeGen.cs
- DocumentApplicationJournalEntry.cs
- StrongNamePublicKeyBlob.cs
- HyperLink.cs
- ValidationRule.cs
- DataSourceSelectArguments.cs
- SortDescription.cs
- GridEntry.cs
- KeyProperty.cs
- GPPOINTF.cs
- PerformanceCountersElement.cs
- InputReport.cs