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
- SqlDependency.cs
- ExpandSegmentCollection.cs
- FunctionImportElement.cs
- ExtendedPropertyCollection.cs
- DispatcherExceptionEventArgs.cs
- DesignTimeParseData.cs
- ZipIOLocalFileHeader.cs
- SmiMetaDataProperty.cs
- ClrPerspective.cs
- HighlightComponent.cs
- ServiceParser.cs
- Resources.Designer.cs
- LinkTarget.cs
- EntityClientCacheEntry.cs
- DataGridCellsPanel.cs
- GraphicsState.cs
- ScriptingProfileServiceSection.cs
- HotSpotCollection.cs
- TextDecorationLocationValidation.cs
- AliasedExpr.cs
- TreeNodeStyle.cs
- SourceFileBuildProvider.cs
- ModelTreeEnumerator.cs
- AnchorEditor.cs
- AttributeEmitter.cs
- ObjectDataSourceSelectingEventArgs.cs
- XmlSchemaAnnotation.cs
- Pen.cs
- WinFormsComponentEditor.cs
- Visitors.cs
- ResumeStoryboard.cs
- RuntimeEnvironment.cs
- FrameworkPropertyMetadata.cs
- EntityTypeEmitter.cs
- RectValueSerializer.cs
- TcpChannelListener.cs
- CustomGrammar.cs
- TypeDependencyAttribute.cs
- NumericExpr.cs
- COM2TypeInfoProcessor.cs
- BatchServiceHost.cs
- ToolStripStatusLabel.cs
- InputScope.cs
- ThreadAbortException.cs
- CategoriesDocument.cs
- Viewport3DVisual.cs
- DataGridAutoFormatDialog.cs
- GuidelineCollection.cs
- Int32Rect.cs
- CaseStatement.cs
- CallbackHandler.cs
- TraversalRequest.cs
- SQLInt32Storage.cs
- TreeView.cs
- AssemblyNameUtility.cs
- BinaryFormatterWriter.cs
- MergablePropertyAttribute.cs
- CounterCreationData.cs
- MenuScrollingVisibilityConverter.cs
- ProgressBarRenderer.cs
- DynamicResourceExtensionConverter.cs
- AppSettingsExpressionBuilder.cs
- SystemWebSectionGroup.cs
- SafeHandles.cs
- EntityDataSourceViewSchema.cs
- TrackBarRenderer.cs
- SmtpClient.cs
- DesignerActionUIStateChangeEventArgs.cs
- counter.cs
- SizeAnimationUsingKeyFrames.cs
- NullRuntimeConfig.cs
- SafeFreeMibTable.cs
- SettingsPropertyWrongTypeException.cs
- PointConverter.cs
- SchemaCollectionPreprocessor.cs
- TdsParserStateObject.cs
- SoapSchemaMember.cs
- COSERVERINFO.cs
- SiteMapDesignerDataSourceView.cs
- IisTraceListener.cs
- ClientBuildManagerCallback.cs
- UnaryNode.cs
- DocumentReferenceCollection.cs
- x509utils.cs
- SiteMapNode.cs
- TwoPhaseCommit.cs
- Drawing.cs
- PinnedBufferMemoryStream.cs
- BasePattern.cs
- FilterException.cs
- XmlTextWriter.cs
- QueryHandler.cs
- IconBitmapDecoder.cs
- CodeIdentifiers.cs
- SimpleRecyclingCache.cs
- HttpFormatExtensions.cs
- ParserStreamGeometryContext.cs
- CallbackBehaviorAttribute.cs
- Positioning.cs
- JournalEntry.cs