Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Administration / ServiceInstanceProvider.cs / 1 / ServiceInstanceProvider.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.ServiceModel.Administration { using System; using System.ServiceModel.Description; using System.ServiceModel.Dispatcher; using System.Collections.Generic; using System.Diagnostics; using System.ServiceModel.Activation; using System.ServiceModel.Channels; using System.ServiceModel.Diagnostics; using System.Globalization; using System.Security.Cryptography.X509Certificates; using System.ServiceModel; using System.ServiceModel.Security; internal class ServiceInstanceProvider : ProviderBase, IWmiProvider { void IWmiProvider.EnumInstances(IWmiInstances instances) { DiagnosticUtility.DebugAssert(null != instances, ""); int processId = AppDomainInfo.Current.ProcessId; foreach (ServiceInfo info in new ServiceInfoCollection(ManagementExtension.Services)) { IWmiInstance instance = instances.NewInstance(null); instance.SetProperty(AdministrationStrings.DistinguishedName, info.DistinguishedName); instance.SetProperty(AdministrationStrings.ProcessId, processId); FillServiceInfo(info, instance); instances.AddInstance(instance); } } bool IWmiProvider.GetInstance(IWmiInstance instance) { DiagnosticUtility.DebugAssert(null != instance, ""); bool bFound = false; if ((int)instance.GetProperty(AdministrationStrings.ProcessId) == AppDomainInfo.Current.ProcessId) { foreach (ServiceInfo info in new ServiceInfoCollection(ManagementExtension.Services)) { if (String.Equals((string)instance.GetProperty(AdministrationStrings.DistinguishedName), info.DistinguishedName, StringComparison.OrdinalIgnoreCase)) { FillServiceInfo(info, instance); bFound = true; break; } } } return bFound; } internal static string GetReference(ServiceInfo serviceInfo) { DiagnosticUtility.DebugAssert(null != serviceInfo, ""); return String.Format(CultureInfo.InvariantCulture, AdministrationStrings.Service + "." + AdministrationStrings.DistinguishedName + "='{0}'," + AdministrationStrings.ProcessId + "={1}", serviceInfo.DistinguishedName, AppDomainInfo.Current.ProcessId); } internal static IWmiInstance GetAppDomainInfo(IWmiInstance instance) { DiagnosticUtility.DebugAssert(null != instance, ""); IWmiInstance appDomainInfo = instance.NewInstance(AdministrationStrings.AppDomainInfo); if (null != appDomainInfo) { AppDomainInstanceProvider.FillAppDomainInfo(appDomainInfo); } return appDomainInfo; } void FillBehaviorsInfo(ServiceInfo info, IWmiInstance instance) { DiagnosticUtility.DebugAssert(null != instance, ""); Listbehaviors = new List (info.Behaviors.Count); foreach (IServiceBehavior behavior in info.Behaviors) { IWmiInstance behaviorInstance; FillBehaviorInfo(behavior, instance, out behaviorInstance); if (null != behaviorInstance) { behaviors.Add(behaviorInstance); } } instance.SetProperty(AdministrationStrings.Behaviors, behaviors.ToArray()); } void FillChannelsInfo(ServiceInfo info, IWmiInstance instance) { DiagnosticUtility.DebugAssert(null != instance, ""); DiagnosticUtility.DebugAssert(null != info, ""); int channelsCount = 0; List instances = new List (); IEnumerable contexts = info.Service.GetInstanceContexts(); foreach (InstanceContext instanceContext in contexts) { lock (instanceContext.ThisLock) { channelsCount += instanceContext.WmiChannels.Count; foreach (IChannel channel in instanceContext.WmiChannels) { IWmiInstance channelInstance = instance.NewInstance(AdministrationStrings.Channel); FillChannelInfo(channel, channelInstance); instances.Add(channelInstance); } } } instance.SetProperty(AdministrationStrings.Channels, instances.ToArray()); } static void FillExtensionsInfo(ServiceInfo info, IWmiInstance instance) { DiagnosticUtility.DebugAssert(null != instance, ""); DiagnosticUtility.DebugAssert(null != info, ""); ProviderBase.FillCollectionInfo(info.Service.Extensions, instance, AdministrationStrings.Extensions); } void FillServiceInfo(ServiceInfo info, IWmiInstance instance) { DiagnosticUtility.DebugAssert(null != instance, ""); DiagnosticUtility.DebugAssert(null != info, ""); ProviderBase.FillCollectionInfo(info.Service.BaseAddresses, instance, AdministrationStrings.BaseAddresses); instance.SetProperty(AdministrationStrings.CounterInstanceName, PerformanceCounters.PerformanceCountersEnabled ? ServicePerformanceCounters.CreateFriendlyInstanceName(info.Service) : String.Empty); instance.SetProperty(AdministrationStrings.ConfigurationName, info.ConfigurationName); instance.SetProperty(AdministrationStrings.DistinguishedName, info.DistinguishedName); instance.SetProperty(AdministrationStrings.Name, info.Name); instance.SetProperty(AdministrationStrings.Namespace, info.Namespace); instance.SetProperty(AdministrationStrings.Metadata, info.Metadata); instance.SetProperty(AdministrationStrings.Opened, ManagementExtension.GetTimeOpened(info.Service)); FillBehaviorsInfo(info, instance); FillExtensionsInfo(info, instance); FillChannelsInfo(info, instance); } void FillBehaviorInfo(IServiceBehavior behavior, IWmiInstance existingInstance, out IWmiInstance instance) { DiagnosticUtility.DebugAssert(null != existingInstance, ""); DiagnosticUtility.DebugAssert(null != behavior, ""); instance = null; if (behavior is AspNetCompatibilityRequirementsAttribute) { instance = existingInstance.NewInstance("AspNetCompatibilityRequirementsAttribute"); AspNetCompatibilityRequirementsAttribute specificBehavior = (AspNetCompatibilityRequirementsAttribute)behavior; instance.SetProperty(AdministrationStrings.RequirementsMode, specificBehavior.RequirementsMode.ToString()); } else if (behavior is ServiceCredentials) { instance = existingInstance.NewInstance("ServiceCredentials"); ServiceCredentials specificBehavior = (ServiceCredentials)behavior; if (specificBehavior.ClientCertificate != null && specificBehavior.ClientCertificate.Certificate != null) { string result = string.Empty; result += String.Format(CultureInfo.InvariantCulture, "Certificate: {0}\n", specificBehavior.ClientCertificate.Certificate); instance.SetProperty(AdministrationStrings.ClientCertificate, result); } if (specificBehavior.IssuedTokenAuthentication != null && specificBehavior.IssuedTokenAuthentication.KnownCertificates != null) { string result = string.Empty; result += String.Format(CultureInfo.InvariantCulture, "AllowUntrustedRsaIssuers: {0}\n", specificBehavior.IssuedTokenAuthentication.AllowUntrustedRsaIssuers); result += String.Format(CultureInfo.InvariantCulture, "CertificateValidationMode: {0}\n", specificBehavior.IssuedTokenAuthentication.CertificateValidationMode); result += String.Format(CultureInfo.InvariantCulture, "RevocationMode: {0}\n", specificBehavior.IssuedTokenAuthentication.RevocationMode); result += String.Format(CultureInfo.InvariantCulture, "TrustedStoreLocation: {0}\n", specificBehavior.IssuedTokenAuthentication.TrustedStoreLocation); foreach (X509Certificate2 certificate in specificBehavior.IssuedTokenAuthentication.KnownCertificates) { if (certificate != null) { result += String.Format(CultureInfo.InvariantCulture, "Known certificate: {0}\n", certificate.FriendlyName); } } result += String.Format(CultureInfo.InvariantCulture, "AudienceUriMode: {0}\n", specificBehavior.IssuedTokenAuthentication.AudienceUriMode); if (specificBehavior.IssuedTokenAuthentication.AllowedAudienceUris != null) { foreach (string str in specificBehavior.IssuedTokenAuthentication.AllowedAudienceUris) { if (str != null) { result += String.Format(CultureInfo.InvariantCulture, "Allowed Uri: {0}\n", str); } } } instance.SetProperty(AdministrationStrings.IssuedTokenAuthentication, result); } if (specificBehavior.Peer != null && specificBehavior.Peer.Certificate != null) { string result = string.Empty; result += String.Format(CultureInfo.InvariantCulture, "Certificate: {0}\n", specificBehavior.Peer.Certificate.ToString(true)); instance.SetProperty(AdministrationStrings.Peer, result); } if (specificBehavior.SecureConversationAuthentication != null && specificBehavior.SecureConversationAuthentication.SecurityContextClaimTypes != null) { string result = string.Empty; foreach (Type claimType in specificBehavior.SecureConversationAuthentication.SecurityContextClaimTypes) { if (claimType != null) { result += String.Format(CultureInfo.InvariantCulture, "ClaimType: {0}\n", claimType); } } instance.SetProperty(AdministrationStrings.SecureConversationAuthentication, result); } if (specificBehavior.ServiceCertificate != null && specificBehavior.ServiceCertificate.Certificate != null) { instance.SetProperty(AdministrationStrings.ServiceCertificate, specificBehavior.ServiceCertificate.Certificate.ToString()); } if (specificBehavior.UserNameAuthentication != null) { instance.SetProperty(AdministrationStrings.UserNameAuthentication, String.Format(CultureInfo.InvariantCulture, "{0}: {1}", AdministrationStrings.ValidationMode, specificBehavior.UserNameAuthentication.UserNamePasswordValidationMode.ToString())); } if (specificBehavior.WindowsAuthentication != null) { instance.SetProperty(AdministrationStrings.WindowsAuthentication, String.Format(CultureInfo.InvariantCulture, "{0}: {1}", AdministrationStrings.AllowAnonymous, specificBehavior.WindowsAuthentication.AllowAnonymousLogons.ToString())); } } else if (behavior is ServiceAuthorizationBehavior) { instance = existingInstance.NewInstance("ServiceAuthorizationBehavior"); ServiceAuthorizationBehavior specificBehavior = (ServiceAuthorizationBehavior)behavior; instance.SetProperty(AdministrationStrings.ImpersonateCallerForAllOperations, specificBehavior.ImpersonateCallerForAllOperations); if (specificBehavior.RoleProvider != null) { instance.SetProperty(AdministrationStrings.RoleProvider, specificBehavior.RoleProvider.ToString()); } if (specificBehavior.ServiceAuthorizationManager != null) { instance.SetProperty(AdministrationStrings.ServiceAuthorizationManager, specificBehavior.ServiceAuthorizationManager.ToString()); } instance.SetProperty(AdministrationStrings.PrincipalPermissionMode, specificBehavior.PrincipalPermissionMode.ToString()); } else if (behavior is ServiceSecurityAuditBehavior) { instance = existingInstance.NewInstance("ServiceSecurityAuditBehavior"); ServiceSecurityAuditBehavior specificBehavior = (ServiceSecurityAuditBehavior)behavior; instance.SetProperty(AdministrationStrings.AuditLogLocation, specificBehavior.AuditLogLocation.ToString()); instance.SetProperty(AdministrationStrings.SuppressAuditFailure, specificBehavior.SuppressAuditFailure); instance.SetProperty(AdministrationStrings.ServiceAuthorizationAuditLevel, specificBehavior.ServiceAuthorizationAuditLevel.ToString()); instance.SetProperty(AdministrationStrings.MessageAuthenticationAuditLevel, specificBehavior.MessageAuthenticationAuditLevel.ToString()); } else if (behavior is ServiceBehaviorAttribute) { instance = existingInstance.NewInstance("ServiceBehaviorAttribute"); ServiceBehaviorAttribute serviceBehavior = (ServiceBehaviorAttribute)behavior; instance.SetProperty(AdministrationStrings.AddressFilterMode, serviceBehavior.AddressFilterMode.ToString()); instance.SetProperty(AdministrationStrings.AutomaticSessionShutdown, serviceBehavior.AutomaticSessionShutdown); instance.SetProperty(AdministrationStrings.ConcurrencyMode, serviceBehavior.ConcurrencyMode.ToString()); instance.SetProperty(AdministrationStrings.ConfigurationName, serviceBehavior.ConfigurationName); instance.SetProperty(AdministrationStrings.IgnoreExtensionDataObject, serviceBehavior.IgnoreExtensionDataObject); instance.SetProperty(AdministrationStrings.IncludeExceptionDetailInFaults, serviceBehavior.IncludeExceptionDetailInFaults); instance.SetProperty(AdministrationStrings.InstanceContextMode, serviceBehavior.InstanceContextMode.ToString()); instance.SetProperty(AdministrationStrings.MaxItemsInObjectGraph, serviceBehavior.MaxItemsInObjectGraph); instance.SetProperty(AdministrationStrings.Name, serviceBehavior.Name); instance.SetProperty(AdministrationStrings.Namespace, serviceBehavior.Namespace); instance.SetProperty(AdministrationStrings.ReleaseServiceInstanceOnTransactionComplete, serviceBehavior.ReleaseServiceInstanceOnTransactionComplete); instance.SetProperty(AdministrationStrings.TransactionAutoCompleteOnSessionClose, serviceBehavior.TransactionAutoCompleteOnSessionClose); instance.SetProperty(AdministrationStrings.TransactionIsolationLevel, serviceBehavior.TransactionIsolationLevel.ToString()); if (serviceBehavior.TransactionTimeoutSet) { instance.SetProperty(AdministrationStrings.TransactionTimeout, serviceBehavior.TransactionTimeoutTimespan); } instance.SetProperty(AdministrationStrings.UseSynchronizationContext, serviceBehavior.UseSynchronizationContext); instance.SetProperty(AdministrationStrings.ValidateMustUnderstand, serviceBehavior.ValidateMustUnderstand); } else if (behavior is ServiceDebugBehavior) { instance = existingInstance.NewInstance("ServiceDebugBehavior"); ServiceDebugBehavior specificBehavior = (ServiceDebugBehavior)behavior; if (null != specificBehavior.HttpHelpPageUrl) { instance.SetProperty(AdministrationStrings.HttpHelpPageUrl, specificBehavior.HttpHelpPageUrl.ToString()); } instance.SetProperty(AdministrationStrings.HttpHelpPageEnabled, specificBehavior.HttpHelpPageEnabled); if (null != specificBehavior.HttpsHelpPageUrl) { instance.SetProperty(AdministrationStrings.HttpsHelpPageUrl, specificBehavior.HttpsHelpPageUrl.ToString()); } instance.SetProperty(AdministrationStrings.HttpsHelpPageEnabled, specificBehavior.HttpsHelpPageEnabled); instance.SetProperty(AdministrationStrings.IncludeExceptionDetailInFaults, specificBehavior.IncludeExceptionDetailInFaults); } else if (behavior is ServiceMetadataBehavior) { instance = existingInstance.NewInstance("ServiceMetadataBehavior"); ServiceMetadataBehavior metadataBehavior = (ServiceMetadataBehavior)behavior; if (null != metadataBehavior.ExternalMetadataLocation) { instance.SetProperty(AdministrationStrings.ExternalMetadataLocation, metadataBehavior.ExternalMetadataLocation.ToString()); } instance.SetProperty(AdministrationStrings.HttpGetEnabled, metadataBehavior.HttpGetEnabled); if (null != metadataBehavior.HttpGetUrl) { instance.SetProperty(AdministrationStrings.HttpGetUrl, metadataBehavior.HttpGetUrl.ToString()); } instance.SetProperty(AdministrationStrings.HttpsGetEnabled, metadataBehavior.HttpsGetEnabled); if (null != metadataBehavior.HttpsGetUrl) { instance.SetProperty(AdministrationStrings.HttpsGetUrl, metadataBehavior.HttpsGetUrl.ToString()); } FillMetadataExporterInfo(instance, metadataBehavior.MetadataExporter); } else if (behavior is ServiceThrottlingBehavior) { instance = existingInstance.NewInstance("ServiceThrottlingBehavior"); ServiceThrottlingBehavior throttlingBehavior = (ServiceThrottlingBehavior)behavior; instance.SetProperty(AdministrationStrings.MaxConcurrentCalls, throttlingBehavior.MaxConcurrentCalls); instance.SetProperty(AdministrationStrings.MaxConcurrentSessions, throttlingBehavior.MaxConcurrentSessions); instance.SetProperty(AdministrationStrings.MaxConcurrentInstances, throttlingBehavior.MaxConcurrentInstances); } else if (behavior is ServiceTimeoutsBehavior) { instance = existingInstance.NewInstance("ServiceTimeoutsBehavior"); ServiceTimeoutsBehavior specificBehavior = (ServiceTimeoutsBehavior)behavior; instance.SetProperty(AdministrationStrings.TransactionTimeout, specificBehavior.TransactionTimeout); } else if (behavior is IWmiInstanceProvider) { IWmiInstanceProvider instanceProvider = (IWmiInstanceProvider)behavior; instance = existingInstance.NewInstance(instanceProvider.GetInstanceType()); instanceProvider.FillInstance(instance); } else { instance = existingInstance.NewInstance("Behavior"); } if (null != instance) { instance.SetProperty(AdministrationStrings.Type, behavior.GetType().FullName); } } void FillMetadataExporterInfo(IWmiInstance instance, MetadataExporter exporter) { DiagnosticUtility.EventLog.LogEvent(TraceEventType.Information, EventLogCategory.Wmi, EventLogEventId.MessageLoggingOn, true, "metadata exporter called"); DiagnosticUtility.DebugAssert(null != instance, ""); DiagnosticUtility.DebugAssert(null != exporter, ""); IWmiInstance metadataExporterInstance = instance.NewInstance(AdministrationStrings.MetadataExporter); metadataExporterInstance.SetProperty(AdministrationStrings.PolicyVersion, exporter.PolicyVersion.ToString()); instance.SetProperty(AdministrationStrings.MetadataExportInfo, metadataExporterInstance); } void FillChannelInfo(IChannel channel, IWmiInstance instance) { DiagnosticUtility.DebugAssert(null != instance, ""); DiagnosticUtility.DebugAssert(null != channel, ""); instance.SetProperty(AdministrationStrings.Type, channel.GetType().ToString()); ServiceChannel serviceChannel = ServiceChannelFactory.GetServiceChannel(channel);; if (null != serviceChannel) { string uri = serviceChannel.RemoteAddress == null ? String.Empty : serviceChannel.RemoteAddress.ToString(); instance.SetProperty(AdministrationStrings.RemoteAddress, uri); string contractName = null != serviceChannel.ClientRuntime ? serviceChannel.ClientRuntime.ContractName : String.Empty; string remoteEndpoint = EndpointInstanceProvider.EndpointReference(uri, contractName, false); instance.SetProperty(AdministrationStrings.RemoteEndpoint, remoteEndpoint); instance.SetProperty(AdministrationStrings.LocalAddress, serviceChannel.LocalAddress == null ? String.Empty : serviceChannel.LocalAddress.ToString()); instance.SetProperty(AdministrationStrings.SessionId, ((IContextChannel)serviceChannel).SessionId); } } } } // 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
- BufferedGraphicsManager.cs
- CryptoProvider.cs
- SchemaImporterExtensionElementCollection.cs
- ChannelEndpointElement.cs
- DesignerTransactionCloseEvent.cs
- UserPreferenceChangingEventArgs.cs
- _ProxyChain.cs
- ECDiffieHellmanCng.cs
- ConditionCollection.cs
- CachedBitmap.cs
- OleDbStruct.cs
- ArgIterator.cs
- SerializationInfo.cs
- _NegotiateClient.cs
- NavigationExpr.cs
- SystemColors.cs
- SoapInteropTypes.cs
- ProcessHost.cs
- CommandManager.cs
- Resources.Designer.cs
- PerformanceCounter.cs
- PropertyState.cs
- PagerSettings.cs
- StylusPlugInCollection.cs
- Polyline.cs
- SoapParser.cs
- XmlDataSourceNodeDescriptor.cs
- VirtualizedItemPattern.cs
- SuppressMessageAttribute.cs
- ApplyTemplatesAction.cs
- ModulesEntry.cs
- WindowsRebar.cs
- DataGridCommandEventArgs.cs
- DataControlFieldCell.cs
- DragAssistanceManager.cs
- hebrewshape.cs
- SpecularMaterial.cs
- NamedPermissionSet.cs
- LocalBuilder.cs
- DesignerCategoryAttribute.cs
- LinkGrep.cs
- DbConnectionFactory.cs
- DrawingState.cs
- DependencyProperty.cs
- BitmapSource.cs
- SafePointer.cs
- DataSetMappper.cs
- IteratorFilter.cs
- ListControl.cs
- XsltLibrary.cs
- ApplicationDirectoryMembershipCondition.cs
- AssociationTypeEmitter.cs
- MultiSelectRootGridEntry.cs
- SQLConvert.cs
- DoubleAnimation.cs
- EndpointDesigner.cs
- TextRunCacheImp.cs
- WebPartManagerInternals.cs
- CompiledQueryCacheEntry.cs
- BeginStoryboard.cs
- ImageCodecInfoPrivate.cs
- StorageEntityTypeMapping.cs
- IBuiltInEvidence.cs
- ActivityBindForm.cs
- ComponentResourceKeyConverter.cs
- MultilineStringConverter.cs
- Internal.cs
- GlyphRunDrawing.cs
- FacetEnabledSchemaElement.cs
- TreeNodeStyle.cs
- XamlFxTrace.cs
- RTLAwareMessageBox.cs
- KeyboardNavigation.cs
- StandardOleMarshalObject.cs
- OutputScopeManager.cs
- WebPartConnectionCollection.cs
- DSASignatureFormatter.cs
- StrokeRenderer.cs
- ConstructorExpr.cs
- EventTask.cs
- CodeSubDirectoriesCollection.cs
- ExceptionHelpers.cs
- CookielessHelper.cs
- datacache.cs
- PassportAuthenticationModule.cs
- MeasureData.cs
- CollectionEditorDialog.cs
- IPipelineRuntime.cs
- ClientSideQueueItem.cs
- WebHttpBindingElement.cs
- SoapExtension.cs
- Drawing.cs
- ItemsChangedEventArgs.cs
- XNodeValidator.cs
- CqlWriter.cs
- TypedOperationInfo.cs
- QueryTask.cs
- SymDocumentType.cs
- WindowsFormsSectionHandler.cs
- ResourcePermissionBaseEntry.cs