public Message Issue(Message request) { try { Console.WriteLine("Call to IWSTrust::Issue"); // if request is null, we're toast if (request == null) { throw new ArgumentNullException("request"); } // Create an RST object from the request message RequestSecurityToken rst = RequestSecurityToken.CreateFrom(request.GetReaderAtBodyContents()); // Check that is really is an Issue request if (rst.RequestType == null || rst.RequestType != Constants.Trust.RequestTypes.Issue) { throw new InvalidOperationException(rst.RequestType); } // Create an RSTR object RequestSecurityTokenResponse rstr = Issue(rst); // Create response message Message response = Message.CreateMessage(request.Version, Constants.Trust.Actions.IssueReply, rstr); // Set RelatesTo of response to message id of request response.Headers.RelatesTo = request.Headers.MessageId; // Address response to ReplyTo of request request.Headers.ReplyTo.ApplyTo(response); return(response); } catch (Exception e) { Console.WriteLine("**** Exception thrown while processing Issue request:"); Console.WriteLine(e.Message); throw; } }