Thanks so much for the pointers. I was able to get the attachment and return to browser using following approach. The key was using GUID of attachment, but name of the document.
Code needs some cleanup but just sharing in case someone needs it:
public ActionResult FilePage(string completeAlias)
{
var kntcoFile = FileProvider.GetFile(completeAlias, "en-US", "MySite").FirstOrDefault();
if (kntcoFile != null)
{
DocumentAttachment attachment = kntcoFile.AllAttachments.FirstOrDefault();
if (attachment != null)
{
string kenticoSite = System.Configuration.ConfigurationManager.AppSettings["KenticoSite"];
string fileUrl = string.Format("{0}getattachment/{1}/{2}", kenticoSite, attachment.AttachmentGUID, kntcoFile.DocumentName);
byte[] fileBytes = null;
using (WebClient wc = new WebClient())
{
fileBytes = wc.DownloadData(fileUrl);
}
return new FileContentResult(fileBytes, attachment.AttachmentMimeType);
}
}
return new HttpNotFoundResult();
}