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
- SingleResultAttribute.cs
- SrgsRuleRef.cs
- TextEffectCollection.cs
- MonitorWrapper.cs
- WorkerRequest.cs
- DispatchChannelSink.cs
- RelationshipEndCollection.cs
- metadatamappinghashervisitor.cs
- FixedSchema.cs
- IriParsingElement.cs
- SymDocumentType.cs
- __Filters.cs
- EnumValidator.cs
- XmlIlTypeHelper.cs
- SystemSounds.cs
- ProjectionPlanCompiler.cs
- SourceElementsCollection.cs
- MemoryMappedFile.cs
- DetailsViewUpdatedEventArgs.cs
- CapabilitiesUse.cs
- PartitionResolver.cs
- Oid.cs
- HttpRuntimeSection.cs
- PromptEventArgs.cs
- MultiplexingFormatMapping.cs
- FrameworkTemplate.cs
- Empty.cs
- MetadataPropertyAttribute.cs
- MouseEventArgs.cs
- MethodToken.cs
- ToolStripItem.cs
- RuntimeIdentifierPropertyAttribute.cs
- CallbackException.cs
- MsmqBindingElementBase.cs
- ExpressionConverter.cs
- keycontainerpermission.cs
- OdbcTransaction.cs
- FixedSOMFixedBlock.cs
- Triangle.cs
- AttributeUsageAttribute.cs
- ClientProxyGenerator.cs
- CacheVirtualItemsEvent.cs
- CompilerState.cs
- Token.cs
- TableLayout.cs
- NamedElement.cs
- StylusSystemGestureEventArgs.cs
- InputGestureCollection.cs
- FormsAuthenticationUser.cs
- safelinkcollection.cs
- FixedSOMLineRanges.cs
- TransactionFlowBindingElement.cs
- SiteMapNode.cs
- SqlProfileProvider.cs
- InfoCardSymmetricAlgorithm.cs
- NameValueFileSectionHandler.cs
- SimpleExpression.cs
- XmlWriter.cs
- Substitution.cs
- ScriptResourceHandler.cs
- AccessText.cs
- DataServiceHostFactory.cs
- PrivilegedConfigurationManager.cs
- SiteMapSection.cs
- ProtocolsSection.cs
- ObjectViewEntityCollectionData.cs
- BlobPersonalizationState.cs
- WebScriptEnablingElement.cs
- SamlSecurityTokenAuthenticator.cs
- ExtensionSimplifierMarkupObject.cs
- AsymmetricKeyExchangeFormatter.cs
- LogFlushAsyncResult.cs
- SqlAliaser.cs
- HtmlInputHidden.cs
- InputGestureCollection.cs
- XmlRawWriter.cs
- ModifiableIteratorCollection.cs
- MDIControlStrip.cs
- BooleanAnimationBase.cs
- Stroke.cs
- WmiPutTraceRecord.cs
- InstanceNotReadyException.cs
- diagnosticsswitches.cs
- ZipIOCentralDirectoryDigitalSignature.cs
- StylusTip.cs
- SqlTransaction.cs
- COM2Properties.cs
- PrintingPermissionAttribute.cs
- ContractNamespaceAttribute.cs
- WpfMemberInvoker.cs
- XmlCDATASection.cs
- TemplateBamlRecordReader.cs
- CngKey.cs
- FontStyle.cs
- DbConnectionOptions.cs
- InfoCardSymmetricCrypto.cs
- ThumbButtonInfo.cs
- CustomValidator.cs
- LocalValueEnumerator.cs
- ValueExpressions.cs