public override Task <HttpResponseMessage> WriteResponse(ResponseWriterContext context) { var outputInfo = context.Response.As <TOutputInfo>() ?? _actionMethod.GetAttribute <TAttribute>(); var data = context.Response.As <OutputBody <T> >()?.Data ?? context.Response as T; if (data != null) { _responseMessage.Content = GetContent(data, outputInfo); _responseMessage.Content.Headers.SetContentType( outputInfo?.ContentType ?? GetContentType(data)); if (outputInfo != null && outputInfo.Filename.IsNotNullOrEmpty()) { _responseMessage.Content.Headers.SetAttachmentDisposition(outputInfo.Filename); } } return(_responseMessage.ToTaskResult()); }