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
- RectangleConverter.cs
- RegisteredArrayDeclaration.cs
- PolicyLevel.cs
- UICuesEvent.cs
- CustomAttribute.cs
- ThemeableAttribute.cs
- AttributeXamlType.cs
- WSSecurityJan2004.cs
- NonSerializedAttribute.cs
- SizeAnimationUsingKeyFrames.cs
- Configuration.cs
- UpdatableGenericsFeature.cs
- FreeFormDragDropManager.cs
- ParameterModifier.cs
- WindowsHyperlink.cs
- SafeCloseHandleCritical.cs
- ServicePoint.cs
- StyleBamlRecordReader.cs
- CircleHotSpot.cs
- OleDbStruct.cs
- RadioButtonStandardAdapter.cs
- CalendarDay.cs
- FlowLayoutSettings.cs
- FixedPosition.cs
- ExplicitDiscriminatorMap.cs
- HandlerWithFactory.cs
- DoubleLinkList.cs
- XmlNamespaceMappingCollection.cs
- TextTreeInsertElementUndoUnit.cs
- SubordinateTransaction.cs
- DataListCommandEventArgs.cs
- DetailsViewDeleteEventArgs.cs
- IPipelineRuntime.cs
- DbMetaDataFactory.cs
- TemplateBuilder.cs
- ChainOfDependencies.cs
- SmtpSpecifiedPickupDirectoryElement.cs
- QilFactory.cs
- DictionaryContent.cs
- RSAPKCS1SignatureFormatter.cs
- COSERVERINFO.cs
- NullExtension.cs
- SHA1.cs
- SelectingProviderEventArgs.cs
- TableCell.cs
- View.cs
- RuntimeArgumentHandle.cs
- XmlCDATASection.cs
- DataGridViewColumnDesigner.cs
- DataColumn.cs
- HttpHandlerActionCollection.cs
- CodeAssignStatement.cs
- DCSafeHandle.cs
- DiagnosticStrings.cs
- LineBreak.cs
- TypeBinaryExpression.cs
- OuterProxyWrapper.cs
- WorkflowServiceHostFactory.cs
- SafeCertificateStore.cs
- ControllableStoryboardAction.cs
- CheckBoxList.cs
- Label.cs
- SolidColorBrush.cs
- Soap12ProtocolImporter.cs
- KnownTypesHelper.cs
- Bitmap.cs
- RuleEngine.cs
- SystemTcpConnection.cs
- DbConnectionFactory.cs
- mda.cs
- CultureInfo.cs
- SessionParameter.cs
- SqlUnionizer.cs
- ListViewGroupConverter.cs
- ErrorWebPart.cs
- XmlReturnWriter.cs
- XmlReturnReader.cs
- ExpressionEditorAttribute.cs
- DataControlExtensions.cs
- TimeSpanValidatorAttribute.cs
- CanExecuteRoutedEventArgs.cs
- ServiceModelEnumValidator.cs
- RunInstallerAttribute.cs
- PreservationFileReader.cs
- GridPattern.cs
- TextBoxBase.cs
- IntPtr.cs
- Rijndael.cs
- XmlWrappingReader.cs
- AppSettingsReader.cs
- DynamicPropertyReader.cs
- LinearGradientBrush.cs
- SqlServer2KCompatibilityAnnotation.cs
- SqlConnectionPoolGroupProviderInfo.cs
- CodeFieldReferenceExpression.cs
- ProcessModule.cs
- GridPattern.cs
- SkinBuilder.cs
- DeviceContext.cs
- StyleXamlParser.cs