public static void AddIssuedToken(Message message, RequestSecurityTokenResponse rstr) { TransactionFlowProperty.Ensure(message).IssuedTokens.Add(rstr); if (DebugTrace.Verbose) { DebugTrace.Trace(TraceLevel.Verbose, "Added issued token to message"); } }
public static void Set(byte[] propToken, Message message) { if (message.Properties.ContainsKey(PropertyName)) { throw new CommunicationException("A transaction flow property is already set on the message."); } TransactionFlowProperty property = new TransactionFlowProperty(); property.propToken = propToken; message.Properties.Add(PropertyName, property); }
public static RequestSecurityTokenResponse GetIssuedToken(Message message, string identifier, ProtocolVersion protocolVersion) { ICollection <RequestSecurityTokenResponse> is2 = TransactionFlowProperty.TryGetIssuedTokens(message); if (is2 == null) { if (DebugTrace.Verbose) { DebugTrace.Trace(TraceLevel.Verbose, "No issued tokens found in message"); } return(null); } string str = CoordinationStrings.Version(protocolVersion).Identifier; string str2 = CoordinationStrings.Version(protocolVersion).Namespace; foreach (RequestSecurityTokenResponse response in is2) { string str3; string str4; response.GetAppliesToQName(out str3, out str4); if ((str3 == str) && (str4 == str2)) { if (DebugTrace.Verbose) { DebugTrace.Trace(TraceLevel.Verbose, "Found issued token in message"); } try { IdentifierElement appliesTo = null; DataContractSerializer serializer = IdentifierElementSerializer(protocolVersion); ProtocolVersionHelper.AssertProtocolVersion(protocolVersion, typeof(CoordinationServiceSecurity), "GetIssuedToken"); switch (protocolVersion) { case ProtocolVersion.Version10: appliesTo = response.GetAppliesTo <IdentifierElement10>(serializer); break; case ProtocolVersion.Version11: appliesTo = response.GetAppliesTo <IdentifierElement11>(serializer); break; } if (!(appliesTo.Identifier != identifier)) { return(response); } if (DebugTrace.Error) { DebugTrace.Trace(TraceLevel.Error, "Issued token identifier does not match expected {0}", identifier); } throw Microsoft.Transactions.Bridge.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new XmlException(Microsoft.Transactions.SR.GetString("IssuedTokenIdentifierMismatch"))); } catch (SerializationException exception) { if (DebugTrace.Error) { DebugTrace.Trace(TraceLevel.Error, "Issued token AppliesTo element could not be deserialized: {0}", exception.Message); } throw Microsoft.Transactions.Bridge.DiagnosticUtility.ExceptionUtility.ThrowHelperError(new XmlException(exception.Message, exception)); } return(response); } } if (DebugTrace.Verbose) { DebugTrace.Trace(TraceLevel.Verbose, "No matching issued token found in message"); } return(null); }
private static void SendTransaction(ref ProxyRpc rpc) { TransactionFlowProperty.Set(Transaction.Current, rpc.Request); }