Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / ComIntegration / WebHostedComPlusServiceHost.cs / 2 / WebHostedComPlusServiceHost.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.ServiceModel.ComIntegration { using System; using System.Collections.Generic; using System.Runtime.InteropServices; using System.ServiceModel; using System.ServiceModel.Configuration; using System.ServiceModel.Diagnostics; class WebHostedComPlusServiceHost : ComPlusServiceHost { public WebHostedComPlusServiceHost (string webhostParams, Uri[] baseAddresses) { foreach (Uri address in baseAddresses) this.InternalBaseAddresses.Add(address); // Split up the parameter string into "clsid,appid". // string[] parameters = webhostParams.Split(','); if (parameters.Length != 2) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(System.ServiceModel.ComIntegration.Error.ListenerInitFailed( SR.GetString(SR.ServiceStringFormatError, webhostParams))); } Guid clsid; Guid appId; if ( !DiagnosticUtility.Utility.TryCreateGuid(parameters[0], out clsid)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(System.ServiceModel.ComIntegration.Error.ListenerInitFailed( SR.GetString(SR.ServiceStringFormatError, webhostParams))); } if ( !DiagnosticUtility.Utility.TryCreateGuid(parameters[1], out appId)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(System.ServiceModel.ComIntegration.Error.ListenerInitFailed( SR.GetString(SR.ServiceStringFormatError, webhostParams))); } // "B" == "With dashes and curly braces" // (The catalog gives us GUIDs in this format) // string clsidString = clsid.ToString("B").ToUpperInvariant (); // Look up the COM+ AdminSDK information for this // AppID/CLSID pair. // ComCatalogObject application; application = CatalogUtil.FindApplication(appId); if (application == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(System.ServiceModel.ComIntegration.Error.ListenerInitFailed( SR.GetString(SR.ApplicationNotFound, appId.ToString("B").ToUpperInvariant ()))); } ComCatalogCollection classes; classes = application.GetCollection("Components"); ComCatalogObject classObject = null; foreach(ComCatalogObject tempClassObject in classes) { string otherClsid = (string)tempClassObject.GetValue("CLSID"); if (clsidString.Equals( otherClsid, StringComparison.OrdinalIgnoreCase)) { classObject = tempClassObject; break; } } if (classObject == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(System.ServiceModel.ComIntegration.Error.ListenerInitFailed( SR.GetString(SR.ClsidNotInApplication, clsidString, appId.ToString("B").ToUpperInvariant()))); } // Load up Indigo configuration, get the configuration for // this service. // ServicesSection services = ServicesSection.GetSection(); ServiceElement service = null; foreach (ServiceElement serviceInConfig in services.Services) { Guid clsidFromConfig = Guid.Empty; Guid appidFromConfig = Guid.Empty; string[] serviceParams = serviceInConfig.Name.Split(','); if (serviceParams.Length != 2) { continue; } if ( !DiagnosticUtility.Utility.TryCreateGuid(serviceParams[0], out appidFromConfig)) { // We are tolerant of having non COM+ based services // for webhost. continue; } if ( !DiagnosticUtility.Utility.TryCreateGuid(serviceParams[1], out clsidFromConfig)) { // We are tolerant of having non COM+ based services // for webhost. continue; } if (clsidFromConfig == clsid && appidFromConfig == appId) { service = serviceInConfig; break; } } if (service == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(System.ServiceModel.ComIntegration.Error.ListenerInitFailed( SR.GetString(SR.ClsidNotInConfiguration, clsidString))); } // Hosting mode evaluation // HostingMode hostingMode; int activation = (int)application.GetValue("Activation"); if (activation == 0) { hostingMode = HostingMode.WebHostInProcess; } else { hostingMode = HostingMode.WebHostOutOfProcess; } // Now we have everything we need, do common // initialization. // Initialize (clsid, service, application, classObject, hostingMode); } } } // 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
- wgx_exports.cs
- EmptyEnumerator.cs
- DispatcherProcessingDisabled.cs
- NamedPipeAppDomainProtocolHandler.cs
- DataGridViewImageCell.cs
- QueryableDataSourceHelper.cs
- ExecutedRoutedEventArgs.cs
- Attributes.cs
- PointHitTestResult.cs
- InOutArgument.cs
- XPathBuilder.cs
- GlyphRunDrawing.cs
- UntypedNullExpression.cs
- AdapterDictionary.cs
- EventLogger.cs
- FirstMatchCodeGroup.cs
- ConfigXmlWhitespace.cs
- LambdaCompiler.Statements.cs
- OleDbDataReader.cs
- StringExpressionSet.cs
- EventLogInformation.cs
- XPathParser.cs
- VirtualDirectoryMappingCollection.cs
- NetworkStream.cs
- StartUpEventArgs.cs
- FormViewInsertedEventArgs.cs
- TraceSection.cs
- DESCryptoServiceProvider.cs
- JapaneseLunisolarCalendar.cs
- RIPEMD160Managed.cs
- InvariantComparer.cs
- DataKeyArray.cs
- MetaDataInfo.cs
- HttpDictionary.cs
- DataGridViewCellFormattingEventArgs.cs
- RadialGradientBrush.cs
- PublishLicense.cs
- FormViewRow.cs
- ProtocolsConfiguration.cs
- Wildcard.cs
- ResolveDuplexCD1AsyncResult.cs
- LongValidator.cs
- MailMessageEventArgs.cs
- TraceXPathNavigator.cs
- ThreadExceptionEvent.cs
- EncoderReplacementFallback.cs
- FontSourceCollection.cs
- TagNameToTypeMapper.cs
- BulletedListEventArgs.cs
- SqlDataSourceStatusEventArgs.cs
- XmlC14NWriter.cs
- NullableBoolConverter.cs
- VectorCollectionConverter.cs
- OutputCacheProfile.cs
- DesignOnlyAttribute.cs
- ToolZoneDesigner.cs
- RegexCaptureCollection.cs
- XmlSchemaNotation.cs
- RemotingSurrogateSelector.cs
- EntitySet.cs
- HeaderedItemsControl.cs
- BoundConstants.cs
- MailHeaderInfo.cs
- EdmComplexPropertyAttribute.cs
- TreeViewDesigner.cs
- SmiMetaDataProperty.cs
- SqlConnectionPoolProviderInfo.cs
- TransformValueSerializer.cs
- TransportChannelListener.cs
- HGlobalSafeHandle.cs
- ActiveXSite.cs
- DataGridViewTextBoxColumn.cs
- ReferentialConstraintRoleElement.cs
- DbDeleteCommandTree.cs
- FixUpCollection.cs
- FixedTextContainer.cs
- ResourceDescriptionAttribute.cs
- OdbcConnectionPoolProviderInfo.cs
- ParseHttpDate.cs
- UpdateEventArgs.cs
- TreePrinter.cs
- Effect.cs
- CodeSnippetTypeMember.cs
- SequenceDesigner.cs
- XsdValidatingReader.cs
- ContentAlignmentEditor.cs
- XmlSchemaInfo.cs
- OutputBuffer.cs
- MimeTypeMapper.cs
- ZoomPercentageConverter.cs
- StrongNameMembershipCondition.cs
- IPHostEntry.cs
- FaultDescription.cs
- SqlConnectionString.cs
- SqlConnection.cs
- DbDataAdapter.cs
- AttributeCollection.cs
- SelectorAutomationPeer.cs
- TransformerInfoCollection.cs
- DataGridColumnHeader.cs