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
- RequestQueryProcessor.cs
- InlinedLocationReference.cs
- PersonalizationStateInfo.cs
- XmlReaderSettings.cs
- XmlDataSource.cs
- MultiTrigger.cs
- TextAction.cs
- ServiceOperationParameter.cs
- SharedDp.cs
- PointAnimationClockResource.cs
- DataRowCollection.cs
- BamlLocalizabilityResolver.cs
- XmlByteStreamReader.cs
- XmlSchemaProviderAttribute.cs
- BindUriHelper.cs
- XmlUtil.cs
- WebPartChrome.cs
- CatalogUtil.cs
- ConfigurationFileMap.cs
- SecurityTokenInclusionMode.cs
- ColorAnimationUsingKeyFrames.cs
- CodeRemoveEventStatement.cs
- NamespaceTable.cs
- CharAnimationUsingKeyFrames.cs
- Decimal.cs
- httpserverutility.cs
- ThousandthOfEmRealDoubles.cs
- BindingContext.cs
- MatrixUtil.cs
- SchemaConstraints.cs
- DataPagerFieldItem.cs
- TableHeaderCell.cs
- EnumUnknown.cs
- IndexedWhereQueryOperator.cs
- VerificationException.cs
- DeviceSpecificChoiceCollection.cs
- WebPartExportVerb.cs
- ImplicitInputBrush.cs
- SystemResourceKey.cs
- IdentityManager.cs
- TypeUnloadedException.cs
- ISO2022Encoding.cs
- StoreItemCollection.cs
- ObjectQueryExecutionPlan.cs
- Repeater.cs
- DateTime.cs
- VisualTransition.cs
- PathTooLongException.cs
- RectAnimationClockResource.cs
- TableLayoutSettings.cs
- TimeSpanStorage.cs
- OptimalTextSource.cs
- XmlIncludeAttribute.cs
- SafeRightsManagementQueryHandle.cs
- RuntimeCompatibilityAttribute.cs
- HttpContext.cs
- XmlHierarchyData.cs
- CachedPathData.cs
- ProxyHwnd.cs
- SelectiveScrollingGrid.cs
- XmlComment.cs
- UpdatePanel.cs
- ExpressionVisitor.cs
- CaretElement.cs
- SynchronizedCollection.cs
- ParsedAttributeCollection.cs
- ResourceProperty.cs
- RefreshPropertiesAttribute.cs
- DoubleUtil.cs
- AudioFileOut.cs
- JoinSymbol.cs
- HashCodeCombiner.cs
- ZipIOBlockManager.cs
- DataGridColumnCollection.cs
- FillErrorEventArgs.cs
- WebWorkflowRole.cs
- _SpnDictionary.cs
- CodePrimitiveExpression.cs
- BaseAddressPrefixFilterElement.cs
- FixedDSBuilder.cs
- CodeVariableReferenceExpression.cs
- PathFigureCollectionValueSerializer.cs
- LicenseContext.cs
- TypeCodeDomSerializer.cs
- TextTreeObjectNode.cs
- PropertyCollection.cs
- SvcMapFile.cs
- ServiceContractListItemList.cs
- DbFunctionCommandTree.cs
- SafeNativeMethods.cs
- MimeBasePart.cs
- LinearGradientBrush.cs
- ApplicationFileParser.cs
- DataGridViewUtilities.cs
- NonParentingControl.cs
- ProfileEventArgs.cs
- AutomationElementIdentifiers.cs
- BevelBitmapEffect.cs
- ModelVisual3D.cs
- Peer.cs