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
- CapabilitiesRule.cs
- BaseProcessor.cs
- ToolboxItemFilterAttribute.cs
- TextEncodedRawTextWriter.cs
- XamlPoint3DCollectionSerializer.cs
- PersianCalendar.cs
- DeclaredTypeElement.cs
- CodeTypeParameterCollection.cs
- ElementsClipboardData.cs
- EntityDataSourceColumn.cs
- DynamicQueryableWrapper.cs
- BaseTreeIterator.cs
- EditorPart.cs
- RepeaterCommandEventArgs.cs
- Marshal.cs
- DataViewManagerListItemTypeDescriptor.cs
- SubMenuStyle.cs
- CharEntityEncoderFallback.cs
- SapiAttributeParser.cs
- CheckableControlBaseAdapter.cs
- BindableAttribute.cs
- AnnotationDocumentPaginator.cs
- StrokeDescriptor.cs
- IsolatedStoragePermission.cs
- Stack.cs
- SignatureTargetIdManager.cs
- OdbcErrorCollection.cs
- TemplateControlBuildProvider.cs
- ManipulationDeltaEventArgs.cs
- Avt.cs
- Certificate.cs
- OdbcUtils.cs
- JsonQueryStringConverter.cs
- SqlBulkCopyColumnMapping.cs
- TreeNodeCollectionEditor.cs
- DirectoryObjectSecurity.cs
- PartManifestEntry.cs
- DataTableMapping.cs
- Label.cs
- MatrixAnimationUsingKeyFrames.cs
- BasePropertyDescriptor.cs
- ConnectionProviderAttribute.cs
- _NetworkingPerfCounters.cs
- Constants.cs
- Zone.cs
- CacheAxisQuery.cs
- EventLogTraceListener.cs
- PersistenceTypeAttribute.cs
- CircleEase.cs
- DataProtectionSecurityStateEncoder.cs
- DesignerCatalogPartChrome.cs
- KeyValuePair.cs
- PictureBox.cs
- WriteTimeStream.cs
- CommandPlan.cs
- Listen.cs
- ThemeDirectoryCompiler.cs
- ContainsRowNumberChecker.cs
- Connector.cs
- Stroke2.cs
- _HTTPDateParse.cs
- ClickablePoint.cs
- RectAnimationBase.cs
- CodeObject.cs
- ErrorWrapper.cs
- CompiledXpathExpr.cs
- SqlDependency.cs
- ValidationHelpers.cs
- TypeToStringValueConverter.cs
- TrailingSpaceComparer.cs
- FixedSOMFixedBlock.cs
- SubpageParagraph.cs
- EventSinkHelperWriter.cs
- EntityCollection.cs
- Bold.cs
- SessionEndingEventArgs.cs
- RepeaterItemEventArgs.cs
- ResourceSet.cs
- CodePageUtils.cs
- Operators.cs
- ToolStripArrowRenderEventArgs.cs
- DockAndAnchorLayout.cs
- SendKeys.cs
- ListViewDeletedEventArgs.cs
- XmlHierarchyData.cs
- RectAnimation.cs
- CacheMemory.cs
- MobileComponentEditorPage.cs
- KeyValueSerializer.cs
- ClientSettings.cs
- PasswordPropertyTextAttribute.cs
- CodeCompileUnit.cs
- CharacterMetrics.cs
- IfAction.cs
- ScaleTransform3D.cs
- ConnectionPointCookie.cs
- HttpVersion.cs
- BindingsCollection.cs
- SmtpNtlmAuthenticationModule.cs
- DelegatingTypeDescriptionProvider.cs