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
- PolyBezierSegment.cs
- ScriptRef.cs
- TabControlEvent.cs
- DataBindingCollection.cs
- FontInfo.cs
- ConfigurationStrings.cs
- GridView.cs
- InputScope.cs
- QueryPageSettingsEventArgs.cs
- TypeConverterAttribute.cs
- ToolboxDataAttribute.cs
- ReferentialConstraint.cs
- EventLogPermissionHolder.cs
- WriteableBitmap.cs
- TextTreeTextBlock.cs
- LongValidatorAttribute.cs
- Evidence.cs
- DoubleLinkListEnumerator.cs
- ResourcePermissionBase.cs
- ValidatorCompatibilityHelper.cs
- MessageBox.cs
- Dump.cs
- HttpListenerException.cs
- ExpressionsCollectionConverter.cs
- RoleManagerModule.cs
- ManualResetEventSlim.cs
- OpacityConverter.cs
- TextServicesCompartmentEventSink.cs
- ObjectConverter.cs
- __TransparentProxy.cs
- EditorAttribute.cs
- BrowserInteropHelper.cs
- HierarchicalDataTemplate.cs
- NameSpaceEvent.cs
- JavaScriptObjectDeserializer.cs
- dataSvcMapFileLoader.cs
- BlurBitmapEffect.cs
- DefaultPropertiesToSend.cs
- ReferenceEqualityComparer.cs
- ClipboardData.cs
- IpcChannelHelper.cs
- TransformerInfo.cs
- SmtpFailedRecipientException.cs
- TemplatedWizardStep.cs
- TextRunProperties.cs
- processwaithandle.cs
- DoubleAnimationClockResource.cs
- QuaternionAnimationUsingKeyFrames.cs
- FileClassifier.cs
- NameValuePair.cs
- Int32Converter.cs
- ThicknessConverter.cs
- ColorConverter.cs
- UnSafeCharBuffer.cs
- IndentedTextWriter.cs
- ExternalException.cs
- BindingRestrictions.cs
- GenericTextProperties.cs
- WebPartEventArgs.cs
- TextFragmentEngine.cs
- TryCatch.cs
- Bitmap.cs
- HtmlTableRowCollection.cs
- ListDependantCardsRequest.cs
- SoundPlayerAction.cs
- LinearGradientBrush.cs
- StylusPointPropertyId.cs
- PermissionSetEnumerator.cs
- OracleConnectionFactory.cs
- Common.cs
- SQLString.cs
- GraphicsPath.cs
- WebPartVerbCollection.cs
- EditorResources.cs
- InvokePatternIdentifiers.cs
- ContextMenuAutomationPeer.cs
- baseaxisquery.cs
- RegexGroup.cs
- UserPersonalizationStateInfo.cs
- EnumBuilder.cs
- IPGlobalProperties.cs
- StringExpressionSet.cs
- InfoCardMetadataExchangeClient.cs
- TrackingProfileManager.cs
- ADMembershipUser.cs
- DataGridViewColumnHeaderCell.cs
- PrivilegedConfigurationManager.cs
- Listen.cs
- NavigatingCancelEventArgs.cs
- BufferAllocator.cs
- AsyncResult.cs
- ZipPackage.cs
- QilStrConcatenator.cs
- ObjectSet.cs
- ProviderSettings.cs
- DocumentGridPage.cs
- PopOutPanel.cs
- Odbc32.cs
- FileDataSourceCache.cs
- TabPage.cs