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
- RegistryPermission.cs
- DataRowComparer.cs
- DataGridViewRowsAddedEventArgs.cs
- QilReference.cs
- DateTimeConverter2.cs
- AttributeEmitter.cs
- MenuItemCollectionEditor.cs
- MultiPageTextView.cs
- MexNamedPipeBindingElement.cs
- HandleExceptionArgs.cs
- PowerModeChangedEventArgs.cs
- PrintDialogException.cs
- TdsValueSetter.cs
- CacheVirtualItemsEvent.cs
- DecoderNLS.cs
- StylusEditingBehavior.cs
- SoapFaultCodes.cs
- CodePropertyReferenceExpression.cs
- ResourceManagerWrapper.cs
- IntSecurity.cs
- ValueType.cs
- DataGridItemCollection.cs
- SmtpNegotiateAuthenticationModule.cs
- PtsContext.cs
- EventMappingSettings.cs
- DebugView.cs
- ResourcesChangeInfo.cs
- StylusTip.cs
- RtfControls.cs
- DesignerValidationSummaryAdapter.cs
- IsolatedStorageException.cs
- AutoResizedEvent.cs
- PopOutPanel.cs
- ImageAttributes.cs
- PriorityChain.cs
- TdsEnums.cs
- NonParentingControl.cs
- PageBuildProvider.cs
- GlobalAllocSafeHandle.cs
- X509Certificate2.cs
- MulticastNotSupportedException.cs
- EventItfInfo.cs
- FusionWrap.cs
- ByteRangeDownloader.cs
- ListBoxChrome.cs
- GeneralTransform3DCollection.cs
- ObjectKeyFrameCollection.cs
- BaseCollection.cs
- CustomError.cs
- TemplateParser.cs
- InvalidCommandTreeException.cs
- PropertyGridEditorPart.cs
- OleDbFactory.cs
- DataGridTableStyleMappingNameEditor.cs
- TypeLoadException.cs
- KeyConverter.cs
- NestedContainer.cs
- IndexOutOfRangeException.cs
- AccessibleObject.cs
- InputGestureCollection.cs
- WebMessageBodyStyleHelper.cs
- PkcsUtils.cs
- HtmlTable.cs
- Point3DCollectionConverter.cs
- TraceLevelStore.cs
- TextServicesCompartmentContext.cs
- NativeMethods.cs
- HtmlLink.cs
- CodeArgumentReferenceExpression.cs
- XmlCharacterData.cs
- DeflateStream.cs
- GridViewCancelEditEventArgs.cs
- Win32NamedPipes.cs
- PlaceHolder.cs
- ValidationPropertyAttribute.cs
- UIElementIsland.cs
- webeventbuffer.cs
- SQLUtility.cs
- BitmapFrameEncode.cs
- Misc.cs
- SynchronizationLockException.cs
- SystemEvents.cs
- Brush.cs
- HttpListener.cs
- PageAsyncTaskManager.cs
- AsyncResult.cs
- CaseStatement.cs
- TemplateControlParser.cs
- TextBoxBase.cs
- InProcStateClientManager.cs
- SelectorItemAutomationPeer.cs
- TextParagraphView.cs
- NetDispatcherFaultException.cs
- ColorConvertedBitmap.cs
- QueryRewriter.cs
- WindowsTokenRoleProvider.cs
- SafeLibraryHandle.cs
- ResourceDisplayNameAttribute.cs
- RewritingValidator.cs
- StoreUtilities.cs