FinalizeProcessingHandler.cs 782 B

1234567891011121314151617181920212223242526
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.ServiceModel.Channels;
  5. using System.ServiceModel;
  6. namespace System.ServiceModel.Dispatcher
  7. {
  8. internal class FinalizeProcessingHandler : BaseRequestProcessorHandler
  9. {
  10. protected override bool ProcessRequest (MessageProcessingContext mrc)
  11. {
  12. FinishRequest (mrc);
  13. return false;
  14. }
  15. void FinishRequest (MessageProcessingContext mrc)
  16. {
  17. if (mrc.Operation != null && mrc.Operation.IsTerminating && mrc.OperationContext.Channel.InputSession != null)
  18. mrc.OperationContext.Channel.Close (); // FIXME: timeout?
  19. if (mrc.Operation != null && mrc.Operation.ReleaseInstanceAfterCall)
  20. mrc.InstanceContext.ReleaseServiceInstance ();
  21. mrc.InstanceContext.CloseIfIdle ();
  22. }
  23. }
  24. }