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
- ObjectListFieldCollection.cs
- ValidationErrorEventArgs.cs
- CodeVariableDeclarationStatement.cs
- GeometryCollection.cs
- XmlAttribute.cs
- FieldToken.cs
- IndicFontClient.cs
- XhtmlConformanceSection.cs
- PropertyFilterAttribute.cs
- TdsParserHelperClasses.cs
- ZipIOBlockManager.cs
- DrawingContextDrawingContextWalker.cs
- PiiTraceSource.cs
- ValidatorUtils.cs
- Timeline.cs
- BuildProvider.cs
- SQLByteStorage.cs
- CheckableControlBaseAdapter.cs
- Base64Encoder.cs
- OwnerDrawPropertyBag.cs
- connectionpool.cs
- HandlerWithFactory.cs
- WS2007HttpBinding.cs
- DiscoveryDocumentSearchPattern.cs
- RequiredAttributeAttribute.cs
- CheckedListBox.cs
- RenderDataDrawingContext.cs
- TextTreeObjectNode.cs
- ProfileSettings.cs
- HashHelper.cs
- LinkConverter.cs
- NgenServicingAttributes.cs
- ImageSource.cs
- DataGridViewLinkCell.cs
- Internal.cs
- KeyedHashAlgorithm.cs
- WSSecurityOneDotZeroReceiveSecurityHeader.cs
- StylusDevice.cs
- XPathNodeIterator.cs
- AuthorizationRule.cs
- AsymmetricSecurityProtocolFactory.cs
- RootProfilePropertySettingsCollection.cs
- EventDescriptorCollection.cs
- HttpResponse.cs
- Internal.cs
- IsolatedStorageSecurityState.cs
- MdiWindowListItemConverter.cs
- HttpsTransportBindingElement.cs
- EntityDataSourceViewSchema.cs
- localization.cs
- XmlSchemaSubstitutionGroup.cs
- Logging.cs
- AssociatedControlConverter.cs
- Geometry3D.cs
- DataListCommandEventArgs.cs
- DataGridRelationshipRow.cs
- WorkerRequest.cs
- TabletDevice.cs
- BaseDataListComponentEditor.cs
- UrlParameterWriter.cs
- CqlBlock.cs
- EncryptedPackageFilter.cs
- Rule.cs
- EventLogPermissionEntryCollection.cs
- SyndicationDeserializer.cs
- HttpProcessUtility.cs
- DtcInterfaces.cs
- GridErrorDlg.cs
- UnitySerializationHolder.cs
- DesignTimeHTMLTextWriter.cs
- CrossSiteScriptingValidation.cs
- webbrowsersite.cs
- RuleSettingsCollection.cs
- BinaryObjectInfo.cs
- PrinterResolution.cs
- DataGridViewCellContextMenuStripNeededEventArgs.cs
- SoapSchemaImporter.cs
- ReflectionUtil.cs
- KnowledgeBase.cs
- CryptoProvider.cs
- Parameter.cs
- CustomCredentialPolicy.cs
- VBIdentifierDesigner.xaml.cs
- TabControl.cs
- UserControl.cs
- ConnectionPoolManager.cs
- GcSettings.cs
- MemberPath.cs
- ElementHost.cs
- Marshal.cs
- MDIWindowDialog.cs
- WindowsListViewGroupHelper.cs
- TextBoxAutomationPeer.cs
- LinkLabelLinkClickedEvent.cs
- PasswordRecovery.cs
- HttpListenerRequest.cs
- VolatileResourceManager.cs
- InteropBitmapSource.cs
- BasePropertyDescriptor.cs
- ApplicationServiceHelper.cs