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
- _FixedSizeReader.cs
- XmlSchemaCollection.cs
- RadioButtonStandardAdapter.cs
- MappingModelBuildProvider.cs
- OleDbPermission.cs
- AutoResizedEvent.cs
- HwndSourceKeyboardInputSite.cs
- AppDomainManager.cs
- followingquery.cs
- XmlText.cs
- DetailsViewUpdateEventArgs.cs
- SchemaImporter.cs
- StylusPointPropertyInfo.cs
- NameSpaceEvent.cs
- Italic.cs
- ListBindingHelper.cs
- WebControlAdapter.cs
- AuthenticationServiceManager.cs
- FilteredDataSetHelper.cs
- FormsAuthenticationUserCollection.cs
- MetadataArtifactLoader.cs
- XmlSerializableReader.cs
- MobileFormsAuthentication.cs
- CustomWebEventKey.cs
- ContainerVisual.cs
- Collection.cs
- CodeExporter.cs
- _emptywebproxy.cs
- _HelperAsyncResults.cs
- ParseNumbers.cs
- SmtpMail.cs
- MsmqIntegrationProcessProtocolHandler.cs
- FontStyle.cs
- ConnectionPoint.cs
- QuadTree.cs
- grammarelement.cs
- ToolBarButtonClickEvent.cs
- TypeSystemProvider.cs
- MappableObjectManager.cs
- WCFBuildProvider.cs
- CommentGlyph.cs
- ChannelProtectionRequirements.cs
- ProfileSettingsCollection.cs
- UITypeEditor.cs
- While.cs
- XPathArrayIterator.cs
- HandlerMappingMemo.cs
- StateItem.cs
- StrokeDescriptor.cs
- ProgressBarHighlightConverter.cs
- DataGridViewButtonCell.cs
- DataGridViewRowStateChangedEventArgs.cs
- CorrelationValidator.cs
- RowCache.cs
- _emptywebproxy.cs
- GroupItem.cs
- ResolveNextArgumentWorkItem.cs
- CommandDesigner.cs
- RadioButtonList.cs
- Imaging.cs
- RegisteredArrayDeclaration.cs
- ManagementObjectSearcher.cs
- ViewBase.cs
- HtmlHistory.cs
- DateTimeParse.cs
- CodeValidator.cs
- ScaleTransform3D.cs
- SQLDecimalStorage.cs
- CodeDefaultValueExpression.cs
- ConnectorSelectionGlyph.cs
- User.cs
- TypeSystem.cs
- ToolStripPanelRow.cs
- MsmqHostedTransportConfiguration.cs
- Rijndael.cs
- EnumerableCollectionView.cs
- DataGridTable.cs
- ValidatorCompatibilityHelper.cs
- SchemaElementLookUpTable.cs
- XpsResourceDictionary.cs
- XmlSerializationReader.cs
- DescendentsWalker.cs
- _BasicClient.cs
- PreservationFileWriter.cs
- StreamMarshaler.cs
- UpdateEventArgs.cs
- PageParserFilter.cs
- TabletDeviceInfo.cs
- DataServiceConfiguration.cs
- FixedElement.cs
- FtpWebResponse.cs
- HttpRuntimeSection.cs
- PtsPage.cs
- BamlBinaryWriter.cs
- WebPartEditorApplyVerb.cs
- CustomWebEventKey.cs
- TextTabProperties.cs
- RemotingServices.cs
- EventRecord.cs
- InputMethod.cs