Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / TransactionBridge / Microsoft / Transactions / Wsat / Messaging / ActivationProxy.cs / 1 / ActivationProxy.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- // Define the interfaces and infrastructure needed to send activation messages using System; using System.ServiceModel.Channels; using System.Diagnostics; using System.IdentityModel.Claims; using System.IdentityModel.Policy; using System.ServiceModel; using System.Transactions; using Microsoft.Transactions.Wsat.Protocol; namespace Microsoft.Transactions.Wsat.Messaging { abstract class ActivationProxy : RequestReplyProxy { public ActivationProxy(CoordinationService coordination, EndpointAddress to) : base (coordination, to) { } CreateCoordinationContextMessage CreateCreateCoordinationContextMessage(ref CreateCoordinationContext create) { CreateCoordinationContextMessage message = new CreateCoordinationContextMessage(this.messageVersion, ref create); if (create.IssuedToken != null) { CoordinationServiceSecurity.AddIssuedToken(message, create.IssuedToken); } return message; } public CreateCoordinationContextResponse SendCreateCoordinationContext (ref CreateCoordinationContext create) { if (DebugTrace.Verbose) { DebugTrace.Trace(TraceLevel.Verbose, "Sending CreateCoordinationContext to {0}", this.to.Uri); } Message message = CreateCreateCoordinationContextMessage(ref create); Message reply = SendRequest(message, this.coordinationStrings.CreateCoordinationContextResponseAction); using (reply) { if (DebugTrace.Verbose) { DebugTrace.Trace(TraceLevel.Verbose, "Dispatching CreateCoordinationContextResponse reply"); if (DebugTrace.Pii) DebugTrace.TracePii(TraceLevel.Verbose, "Sender is {0}", CoordinationServiceSecurity.GetSenderName(reply)); } return new CreateCoordinationContextResponse(reply, this.protocolVersion); } } public IAsyncResult BeginSendCreateCoordinationContext (ref CreateCoordinationContext create, AsyncCallback callback, object state) { if (DebugTrace.Verbose) { DebugTrace.Trace(TraceLevel.Verbose, "Sending CreateCoordinationContext to {0}", this.to.Uri); } Message message = CreateCreateCoordinationContextMessage(ref create); return BeginSendRequest (message, callback, state); } public CreateCoordinationContextResponse EndSendCreateCoordinationContext (IAsyncResult ar) { try { Message reply = EndSendRequest(ar, this.coordinationStrings.CreateCoordinationContextResponseAction); using (reply) { if (DebugTrace.Verbose) { DebugTrace.Trace(TraceLevel.Verbose, "Dispatching CreateCoordinationContextResponse reply"); if (DebugTrace.Pii) DebugTrace.TracePii(TraceLevel.Verbose, "Sender is {0}", CoordinationServiceSecurity.GetSenderName(reply)); } return new CreateCoordinationContextResponse(reply, this.protocolVersion); } } catch (CommunicationException e) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new WsatReceiveFailureException(e)); } } public static void SendCreateCoordinationContextResponse (RequestAsyncResult result, ref CreateCoordinationContextResponse response) { Message message = new CreateCoordinationContextResponseMessage(result.MessageVersion, ref response); if (response.IssuedToken != null) { CoordinationServiceSecurity.AddIssuedToken(message, response.IssuedToken); } result.Finished (message); } public static void SendFaultResponse (RequestAsyncResult result, Fault fault) { Library.SendFaultResponse(result, fault); } } class InteropActivationProxy : ActivationProxy { public InteropActivationProxy(CoordinationService coordination, EndpointAddress to) : base (coordination, to) { } protected override IChannelFactorySelectChannelFactory(out MessageVersion messageVersion) { this.interoperating = true; messageVersion = this.coordinationService.InteropActivationBinding.MessageVersion; return this.coordinationService.InteropActivationChannelFactory; } } class WindowsActivationProxy : ActivationProxy { public WindowsActivationProxy(CoordinationService coordination, EndpointAddress to) : base(coordination, to) { } protected override IChannelFactory SelectChannelFactory(out MessageVersion messageVersion) { this.interoperating = false; EndpointIdentity identity = this.to.Identity; if (identity != null) { string claimType = identity.IdentityClaim.ClaimType; if (claimType != ClaimTypes.Spn && claimType != ClaimTypes.Upn) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError( new CreateChannelFailureException(SR.GetString(SR.InvalidTrustIdentityType, claimType))); } } string scheme = this.to.Uri.Scheme; if (string.Compare(scheme, Uri.UriSchemeNetPipe, StringComparison.OrdinalIgnoreCase) == 0) { messageVersion = this.coordinationService.NamedPipeActivationBinding.MessageVersion; return this.coordinationService.NamedPipeActivationChannelFactory; } else if (this.coordinationService.Config.RemoteClientsEnabled && string.Compare(scheme, Uri.UriSchemeHttps, StringComparison.OrdinalIgnoreCase) == 0) { messageVersion = this.coordinationService.WindowsActivationBinding.MessageVersion; return this.coordinationService.WindowsActivationChannelFactory; } else { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError( new CreateChannelFailureException(SR.GetString(SR.InvalidSchemeWithTrustIdentity, scheme))); } } } } // 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
- DocumentOutline.cs
- HyperLinkStyle.cs
- XmlBindingWorker.cs
- AlternateViewCollection.cs
- DataServiceHostFactory.cs
- SqlErrorCollection.cs
- TypeDefinition.cs
- InitializationEventAttribute.cs
- OverflowException.cs
- ContainerActivationHelper.cs
- QueryConverter.cs
- AuthenticationConfig.cs
- InternalRelationshipCollection.cs
- HelpEvent.cs
- EntityProxyFactory.cs
- ToolStripContainer.cs
- CodeObjectCreateExpression.cs
- MultitargetingHelpers.cs
- HandlerBase.cs
- Asn1Utilities.cs
- Screen.cs
- MachinePropertyVariants.cs
- RepeaterCommandEventArgs.cs
- AddressingVersion.cs
- TypeHelpers.cs
- ResolveDuplexCD1AsyncResult.cs
- DocumentSequence.cs
- Annotation.cs
- AttachedPropertyBrowsableAttribute.cs
- XPathDescendantIterator.cs
- ServiceInstanceProvider.cs
- XmlSchemaAnnotated.cs
- CallSiteOps.cs
- ThemeDictionaryExtension.cs
- TimeoutStream.cs
- DataSourceControl.cs
- PostBackTrigger.cs
- PenThread.cs
- MemoryStream.cs
- VirtualPath.cs
- ReflectPropertyDescriptor.cs
- TreeChangeInfo.cs
- WebBrowserNavigatingEventHandler.cs
- Point.cs
- HashMembershipCondition.cs
- DocumentPageHost.cs
- DocumentSchemaValidator.cs
- DecimalStorage.cs
- QilTargetType.cs
- UnsafeNativeMethods.cs
- AppDomainAttributes.cs
- DataColumnCollection.cs
- FunctionUpdateCommand.cs
- TextEditor.cs
- Utils.cs
- AgileSafeNativeMemoryHandle.cs
- ProviderCommandInfoUtils.cs
- ByteKeyFrameCollection.cs
- VirtualStackFrame.cs
- UDPClient.cs
- SmiConnection.cs
- CatalogPartDesigner.cs
- XmlSchemaProviderAttribute.cs
- SoundPlayer.cs
- Vector3DAnimationUsingKeyFrames.cs
- PageParser.cs
- EntityDataSourceChangedEventArgs.cs
- DateTimeConstantAttribute.cs
- Int32Storage.cs
- ConnectorSelectionGlyph.cs
- DBSchemaRow.cs
- HideDisabledControlAdapter.cs
- OptimalTextSource.cs
- GifBitmapDecoder.cs
- Unit.cs
- OutputCacheProfileCollection.cs
- WindowsPrincipal.cs
- ObjectListDataBindEventArgs.cs
- HybridDictionary.cs
- PageThemeCodeDomTreeGenerator.cs
- Point4DValueSerializer.cs
- HuffmanTree.cs
- ExtractorMetadata.cs
- IdentifierCreationService.cs
- ScrollBarRenderer.cs
- log.cs
- CloudCollection.cs
- ExpressionNormalizer.cs
- RijndaelManaged.cs
- DefaultIfEmptyQueryOperator.cs
- XmlQueryCardinality.cs
- AmbientLight.cs
- Encoder.cs
- HtmlInputControl.cs
- WorkflowDefinitionDispenser.cs
- MouseButtonEventArgs.cs
- SimpleTypeResolver.cs
- BufferBuilder.cs
- XmlSchemaExporter.cs
- References.cs