public void BeforeSendReply(ref Message reply, object correlationState) { try { if (reply != null) { ContextMessageProperty context = null; if (sessionMode == SessionMode.NotAllowed || reply.Properties.ContainsKey(suppressContextOnReply)) { if (ContextMessageProperty.TryGet(reply, out context)) { context.Context.Clear(); } } else { string newInstanceId = correlationState as string; if (newInstanceId != null) { if (!ContextMessageProperty.TryGet(reply, out context)) { context = new ContextMessageProperty(); context.Context[WellKnownContextProperties.InstanceId] = newInstanceId; context.AddOrReplaceInMessage(reply); } else { context.Context[WellKnownContextProperties.InstanceId] = newInstanceId; } } } } } finally { DurableInstance durableInstance = OperationContext.Current.InstanceContext.Extensions.Find <DurableInstance>(); if (durableInstance == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError( new InvalidOperationException( SR2.GetString( SR2.RequiredInstanceContextExtensionNotFound, typeof(DurableInstance).Name))); } //Decrement InstanceActivity Count durableInstance.DecrementActivityCount(); } }
public void Put(PutRequest request, out PutResponse response, SecurityToken token, ContextMessageProperty context) { if (request == null) { throw new ArgumentNullException("request"); } if (request.ModifyRequest == null) { throw new ArgumentNullException("ModifyRequest"); } if (request.ResourceReferenceProperty == null) { throw new ArgumentNullException("ResourceReferenceProperty"); } Message putRequest = null; Message putResponse = null; lock (request) { putRequest = Message.CreateMessage(MessageVersion.Default, Constants.WsTransfer.PutAction, request.ModifyRequest, new ClientSerializer(typeof(ModifyRequest))); ClientHelper.AddImdaHeaders(request as ImdaRequest, putRequest); ClientHelper.AddRmHeaders(request as WsTransfer.TransferRequest, putRequest); if (context != null) { context.AddOrReplaceInMessage(putRequest); } } if (token == null) { putResponse = Put(putRequest); response = new PutResponse(putResponse); } else { putResponse = Put(putRequest, token); response = new PutResponse(putResponse); } if (putResponse.IsFault) { ClientHelper.HandleFault(putResponse); } // the response has no information if it isn't a fault // PutResponse putResponseTyped = putResponse.GetBody<PutResponse>(new ClientSerializer(typeof(PutResponse))); }