Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / ComIntegration / ComPlusServiceLoader.cs / 1 / ComPlusServiceLoader.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.ServiceModel.ComIntegration { using System; using System.ServiceModel.Description; using System.ServiceModel; using System.ServiceModel.Activation; using System.Diagnostics; using System.ServiceModel.Diagnostics; class ComPlusServiceLoader { ServiceInfo info; ConfigLoader configLoader; ComPlusTypeLoader typeLoader; public ComPlusServiceLoader (ServiceInfo info) { this.info = info; this.typeLoader = new ComPlusTypeLoader(info); this.configLoader = new ConfigLoader(typeLoader); } public ServiceDescription Load(ServiceHostBase host) { ServiceDescription service = new ServiceDescription(this.info.ServiceName); // ServiceBehaviorAttribute needs to go first in the behaviors collection (before config stuff) AddBehaviors(service); this.configLoader.LoadServiceDescription(host, service, this.info.ServiceElement, host.LoadConfigurationSectionHelper); ValidateConfigInstanceSettings(service); ComPlusServiceHostTrace.Trace(TraceEventType.Information, TraceCode.ComIntegrationServiceHostCreatedServiceEndpoint, SR.TraceCodeComIntegrationServiceHostCreatedServiceEndpoint, this.info, service.Endpoints); return service; } void AddBehaviors(ServiceDescription service) { // The philosophy here is to respect settings from configuration // At the moment, none of the settings we care about can be modified // through configuration. That may change in the future. // However, we never want to silently overwrite a user's configuration. // So we should either accept overrides or reject them, but never // silently update them. // ServiceBehaviorAttribute serviceBehavior = EnsureBehaviorAttribute(service); serviceBehavior.InstanceProvider = new ComPlusInstanceProvider(this.info); serviceBehavior.InstanceContextMode = InstanceContextMode.Single; // SHOULD: There is no reason to not allow concurrency at this level serviceBehavior.ConcurrencyMode = ConcurrencyMode.Multiple; serviceBehavior.UseSynchronizationContext = false; service.Behaviors.Add(new SecurityCookieModeValidator()); if (ServiceHostingEnvironment.IsHosted) { AspNetCompatibilityRequirementsAttribute aspNetCompatibilityRequirements = service.Behaviors.Find(); if (aspNetCompatibilityRequirements == null) { aspNetCompatibilityRequirements = new AspNetCompatibilityRequirementsAttribute(); service.Behaviors.Add(aspNetCompatibilityRequirements); } } } ServiceBehaviorAttribute EnsureBehaviorAttribute(ServiceDescription service) { ServiceBehaviorAttribute serviceBehavior; if (service.Behaviors.Contains(typeof(ServiceBehaviorAttribute))) { serviceBehavior = (ServiceBehaviorAttribute)service.Behaviors[typeof(ServiceBehaviorAttribute)]; } else { serviceBehavior = new ServiceBehaviorAttribute(); service.Behaviors.Insert(0, serviceBehavior); } return serviceBehavior; } void ValidateConfigInstanceSettings(ServiceDescription service) { ServiceBehaviorAttribute serviceBehavior = EnsureBehaviorAttribute(service); foreach (ServiceEndpoint endpoint in service.Endpoints) { if (endpoint != null && !ServiceMetadataBehavior.IsMetadataEndpoint(service, endpoint)) { if (endpoint.Contract.SessionMode == SessionMode.Required) { if (serviceBehavior.InstanceContextMode == InstanceContextMode.PerCall) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(System.ServiceModel.ComIntegration.Error.InconsistentSessionRequirements()); serviceBehavior.InstanceContextMode = InstanceContextMode.PerSession; } else { if (serviceBehavior.InstanceContextMode == InstanceContextMode.PerSession) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(System.ServiceModel.ComIntegration.Error.InconsistentSessionRequirements()); serviceBehavior.InstanceContextMode = InstanceContextMode.PerCall; } } } if (serviceBehavior.InstanceContextMode == InstanceContextMode.Single) serviceBehavior.InstanceContextMode = InstanceContextMode.PerSession; } } } // 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
- WebConvert.cs
- StringAnimationBase.cs
- WebScriptEndpoint.cs
- BuildTopDownAttribute.cs
- TableRow.cs
- CheckoutException.cs
- TextFormattingConverter.cs
- IisTraceWebEventProvider.cs
- Variable.cs
- NavigationExpr.cs
- RangeValueProviderWrapper.cs
- RightsManagementEncryptionTransform.cs
- TextBoxBase.cs
- ServiceNotStartedException.cs
- SqlGenerator.cs
- IconEditor.cs
- Converter.cs
- Constraint.cs
- HtmlInputControl.cs
- mactripleDES.cs
- AuthenticationException.cs
- WSDualHttpBindingCollectionElement.cs
- RealizedColumnsBlock.cs
- WhitespaceRule.cs
- ChineseLunisolarCalendar.cs
- StringPropertyBuilder.cs
- ParallelLoopState.cs
- StrongBox.cs
- FolderBrowserDialog.cs
- WindowShowOrOpenTracker.cs
- WebResponse.cs
- PropertyConverter.cs
- ListViewCancelEventArgs.cs
- TextFormatterHost.cs
- XmlWriterDelegator.cs
- OpenFileDialog.cs
- EntityStoreSchemaGenerator.cs
- XmlSchemaAttributeGroupRef.cs
- SuppressIldasmAttribute.cs
- PolicyUnit.cs
- TrackingServices.cs
- SignatureTargetIdManager.cs
- CultureSpecificCharacterBufferRange.cs
- Expression.cs
- recordstate.cs
- TraceLevelStore.cs
- Vector3DAnimationUsingKeyFrames.cs
- Expressions.cs
- LabelLiteral.cs
- BitmapEditor.cs
- SessionEndedEventArgs.cs
- WebPartMinimizeVerb.cs
- PropertyInfoSet.cs
- HashUtility.cs
- WeakRefEnumerator.cs
- NullExtension.cs
- ComponentDispatcherThread.cs
- EventManager.cs
- EmptyWithCancelationCheckWorkItem.cs
- PersistenceMetadataNamespace.cs
- FileVersion.cs
- OleDbError.cs
- DynamicValidatorEventArgs.cs
- HttpCacheVaryByContentEncodings.cs
- SqlPersonalizationProvider.cs
- MatrixAnimationUsingPath.cs
- ResourcePermissionBaseEntry.cs
- Image.cs
- DesignerActionTextItem.cs
- FileDialog_Vista_Interop.cs
- Cursors.cs
- Point3DCollection.cs
- PingOptions.cs
- SafeFileMapViewHandle.cs
- ContentPlaceHolder.cs
- ConstraintConverter.cs
- GlyphCache.cs
- _ServiceNameStore.cs
- WorkflowValidationFailedException.cs
- PropertyFilterAttribute.cs
- FolderLevelBuildProvider.cs
- PixelFormats.cs
- DBSchemaRow.cs
- latinshape.cs
- ResourceFallbackManager.cs
- PatternMatcher.cs
- WindowVisualStateTracker.cs
- PackagingUtilities.cs
- ChannelManagerBase.cs
- SoapIgnoreAttribute.cs
- localization.cs
- WizardForm.cs
- BackgroundWorker.cs
- ValidatorCompatibilityHelper.cs
- PageClientProxyGenerator.cs
- ResourceDescriptionAttribute.cs
- DataShape.cs
- ContractInferenceHelper.cs
- TextAction.cs
- ManifestResourceInfo.cs