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
- StyleXamlTreeBuilder.cs
- HttpListenerRequestUriBuilder.cs
- HtmlUtf8RawTextWriter.cs
- MailBnfHelper.cs
- ScriptingJsonSerializationSection.cs
- MarkupExtensionParser.cs
- HttpCapabilitiesEvaluator.cs
- DataGridViewBand.cs
- FormClosedEvent.cs
- XmlDataSource.cs
- PersonalizableAttribute.cs
- FileDialog_Vista.cs
- ObjectAnimationBase.cs
- RegexTypeEditor.cs
- SubMenuStyleCollection.cs
- ElementProxy.cs
- OleDbWrapper.cs
- Pair.cs
- ProcessModule.cs
- PersonalizationAdministration.cs
- ParameterCollection.cs
- ToolBar.cs
- EntityDataSourceWrapper.cs
- DataGridViewAutoSizeModeEventArgs.cs
- RepeaterItemCollection.cs
- DataRowChangeEvent.cs
- CoreSwitches.cs
- unsafeIndexingFilterStream.cs
- AppDomainAttributes.cs
- TypeBuilder.cs
- AssemblyCollection.cs
- WebBrowserUriTypeConverter.cs
- ProfileService.cs
- SerializerProvider.cs
- ValueSerializer.cs
- Currency.cs
- StateManagedCollection.cs
- ByteAnimationUsingKeyFrames.cs
- NameTable.cs
- CellTreeNode.cs
- UnaryOperationBinder.cs
- SecurityTokenParametersEnumerable.cs
- SoapElementAttribute.cs
- FormatterConverter.cs
- Config.cs
- RequestQueryProcessor.cs
- StrokeNodeOperations.cs
- HTMLTagNameToTypeMapper.cs
- SiteMapHierarchicalDataSourceView.cs
- SqlDataRecord.cs
- ScrollItemPattern.cs
- InvalidDataContractException.cs
- PrintPreviewControl.cs
- SimplePropertyEntry.cs
- GroupStyle.cs
- CodeGotoStatement.cs
- DbDataAdapter.cs
- ActivityValidationServices.cs
- CompositeKey.cs
- ProfileGroupSettings.cs
- ConstraintConverter.cs
- SystemParameters.cs
- RangeBaseAutomationPeer.cs
- FunctionMappingTranslator.cs
- ForEachAction.cs
- ValidationError.cs
- ContextMarshalException.cs
- DataReaderContainer.cs
- PlatformCulture.cs
- OracleConnectionString.cs
- ModuleConfigurationInfo.cs
- XsltException.cs
- XmlParserContext.cs
- UnmanagedMemoryStream.cs
- ACE.cs
- TableSectionStyle.cs
- sitestring.cs
- LinqDataSourceEditData.cs
- PipelineModuleStepContainer.cs
- ConfigXmlCDataSection.cs
- WindowsMenu.cs
- EdgeModeValidation.cs
- Point3DCollection.cs
- XmlIlVisitor.cs
- XmlnsCompatibleWithAttribute.cs
- CfgParser.cs
- HttpCookiesSection.cs
- ElementUtil.cs
- TemplatedWizardStep.cs
- StaticContext.cs
- IISUnsafeMethods.cs
- ApplyImportsAction.cs
- UnsafeNativeMethods.cs
- ObjectStateFormatter.cs
- LineBreak.cs
- SqlXmlStorage.cs
- DrawingCollection.cs
- DocumentXPathNavigator.cs
- EntityDataSourceState.cs
- TemplateKey.cs