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
- ComponentResourceKey.cs
- RuleCache.cs
- DataServiceProviderWrapper.cs
- _Connection.cs
- PageParserFilter.cs
- BaseDataBoundControl.cs
- ModuleBuilder.cs
- ListViewHitTestInfo.cs
- StickyNoteAnnotations.cs
- ProviderMetadata.cs
- XXXInfos.cs
- TableRow.cs
- BaseParser.cs
- CodeGenerationManager.cs
- GridLengthConverter.cs
- ResourceDictionary.cs
- SessionSwitchEventArgs.cs
- InputMethod.cs
- PrimitiveSchema.cs
- BitmapFrame.cs
- ValidationSummary.cs
- SmiXetterAccessMap.cs
- Literal.cs
- HitTestWithGeometryDrawingContextWalker.cs
- RowsCopiedEventArgs.cs
- WebPartConnectionsConfigureVerb.cs
- PassportAuthenticationModule.cs
- NumericPagerField.cs
- FormViewDeletedEventArgs.cs
- SelectionRange.cs
- ExpressionConverter.cs
- SqlVersion.cs
- Number.cs
- XmlAttributes.cs
- TrackBar.cs
- RuleRefElement.cs
- SortedSet.cs
- TypeReference.cs
- OutOfMemoryException.cs
- IteratorFilter.cs
- ISFTagAndGuidCache.cs
- WebRequest.cs
- IpcChannel.cs
- ScriptManagerProxy.cs
- SimpleTypeResolver.cs
- StrokeFIndices.cs
- VectorCollectionConverter.cs
- GeneralTransform2DTo3DTo2D.cs
- Properties.cs
- UpdateTranslator.cs
- CompoundFileStreamReference.cs
- KeyValueConfigurationCollection.cs
- WindowsSpinner.cs
- SecurityChannelFaultConverter.cs
- Publisher.cs
- _IPv4Address.cs
- Evaluator.cs
- TableRowCollection.cs
- ClientScriptManager.cs
- DocumentPage.cs
- HtmlDocument.cs
- IpcChannelHelper.cs
- ZipIOCentralDirectoryBlock.cs
- XmlDocumentFieldSchema.cs
- OptimalTextSource.cs
- ConfigPathUtility.cs
- DataGridCellItemAutomationPeer.cs
- ConfigXmlText.cs
- _Win32.cs
- BreakSafeBase.cs
- ValidationResult.cs
- ClientTargetSection.cs
- DashStyle.cs
- ReferenceConverter.cs
- SafeCoTaskMem.cs
- Faults.cs
- HTMLTextWriter.cs
- Point3DConverter.cs
- PageEventArgs.cs
- PopupControlService.cs
- FullTextBreakpoint.cs
- SafeCryptoHandles.cs
- DataGridViewLinkColumn.cs
- MatrixConverter.cs
- SubMenuStyleCollectionEditor.cs
- SaveWorkflowAsyncResult.cs
- ConfigurationPropertyCollection.cs
- TreeView.cs
- DisableDpiAwarenessAttribute.cs
- Clock.cs
- ISAPIRuntime.cs
- EntityContainer.cs
- CDSsyncETWBCLProvider.cs
- ApplicationSecurityInfo.cs
- QilList.cs
- MultipleViewPatternIdentifiers.cs
- QilName.cs
- StorageBasedPackageProperties.cs
- XmlUTF8TextWriter.cs
- ELinqQueryState.cs