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
- QuaternionAnimationBase.cs
- ResourcesGenerator.cs
- XdrBuilder.cs
- IDReferencePropertyAttribute.cs
- DataTableMapping.cs
- IisTraceWebEventProvider.cs
- TreeViewAutomationPeer.cs
- TypeSystemProvider.cs
- _SpnDictionary.cs
- _UriSyntax.cs
- CodePageUtils.cs
- DataGridDetailsPresenter.cs
- SerializationAttributes.cs
- NameValueCollection.cs
- AstNode.cs
- ComponentEditorForm.cs
- PropertyPushdownHelper.cs
- TdsParser.cs
- DecimalStorage.cs
- _TLSstream.cs
- OdbcConnectionPoolProviderInfo.cs
- BaseTemplateParser.cs
- Encoder.cs
- Columns.cs
- ModelTreeEnumerator.cs
- SymLanguageType.cs
- AutomationElementIdentifiers.cs
- WindowShowOrOpenTracker.cs
- ZipIOExtraField.cs
- ManagementBaseObject.cs
- SocketException.cs
- BitmapEffectInput.cs
- ContainerParagraph.cs
- PeerEndPoint.cs
- FileNotFoundException.cs
- FileUtil.cs
- ReadOnlyDictionary.cs
- XmlQueryRuntime.cs
- BaseResourcesBuildProvider.cs
- _NestedMultipleAsyncResult.cs
- WorkflowPageSetupDialog.cs
- IPGlobalProperties.cs
- PageTheme.cs
- AppliedDeviceFiltersDialog.cs
- BitmapImage.cs
- XmlBinaryReaderSession.cs
- ForeignKeyConstraint.cs
- RemoveStoryboard.cs
- DocumentGridContextMenu.cs
- PartitionResolver.cs
- FlowLayout.cs
- StaticDataManager.cs
- RefreshEventArgs.cs
- _RegBlobWebProxyDataBuilder.cs
- NativeMethodsOther.cs
- ResourceContainer.cs
- SystemException.cs
- LeaseManager.cs
- PropVariant.cs
- DataPagerCommandEventArgs.cs
- Trace.cs
- Solver.cs
- Encoder.cs
- FontCacheUtil.cs
- PointKeyFrameCollection.cs
- ProcessThreadCollection.cs
- XmlDigitalSignatureProcessor.cs
- EntityParameter.cs
- XmlSchemaSimpleContentRestriction.cs
- DataGridViewCellToolTipTextNeededEventArgs.cs
- DefaultValidator.cs
- OdbcEnvironment.cs
- NonBatchDirectoryCompiler.cs
- UserControl.cs
- ToolbarAUtomationPeer.cs
- GlobalProxySelection.cs
- DataGridViewLinkCell.cs
- DesignerActionService.cs
- InArgument.cs
- listitem.cs
- TreeBuilderXamlTranslator.cs
- DesignerActionListCollection.cs
- XslException.cs
- DocumentPaginator.cs
- KeyTime.cs
- VectorCollectionConverter.cs
- SoapIgnoreAttribute.cs
- COM2ColorConverter.cs
- IOException.cs
- GenericTypeParameterConverter.cs
- MultiDataTrigger.cs
- Constraint.cs
- Pair.cs
- _Events.cs
- ItemsControlAutomationPeer.cs
- TableLayoutStyleCollection.cs
- DSASignatureFormatter.cs
- HybridDictionary.cs
- ProcessThreadCollection.cs
- GridViewColumnCollection.cs