This is my grid view.
<asp:GridView ID="grdTaskHistory" runat="server" CssClass="table table-bordered table-condensed table-responsive"
ShowHeaderWhenEmpty="true" AutoGenerateColumns="false" Style="font-size: smaller; -ms-word-wrap: break-word; word-wrap: break-word; max-width: none; word-break: break-all;">
<HeaderStyle CssClass="headerRow panel-midnight-blue-header" />
<Columns>
<asp:BoundField HeaderText="Execution Date" DataField="STL_EXEC_DT" ItemStyle-Width="20%"/>
<asp:BoundField HeaderText="Executed By" DataField="STL_EXEC_BY" ItemStyle-Width="10%"/>
<asp:BoundField HeaderText="Comments" DataField="STL_COMMENTS" ItemStyle-Width="30%"/>
<asp:BoundField HeaderText="Helpers" DataField="HELPERS" ItemStyle-Width="20%"/>
<asp:TemplateField HeaderText="Document" ItemStyle-Width="20% ">
<ItemTemplate>
<asp:LinkButton runat="server" ID="btnDoc" Text='<%#Eval("DOC_NAME")%>' OnClick="btnDoc_Click" CommandArgument='<%#Eval("STL_DOCUMENT_PATH")%>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
On button click, I've tried multiple set of code and none of it downloads the file.
Firstly I get Thread was being aborted error, when I resolve this error, the code executes but it still won't download the file. Can you please help me point out what I am missing or doing wrong.
First I tried the below code, this gives "Thread was being aborted" error
var bytes = File.ReadAllBytes(file.FullName);
//file = null;
Response.Clear();
MemoryStream ms = new MemoryStream(bytes);
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment;filename=" + docName.Split('=').LastOrDefault());
Response.Buffer = true;
ms.WriteTo(Response.OutputStream);
Response.End();
Then I tried this, error was resolved but file doesn't download
Response.ContentType = "application/pdf";
Response.AddHeader("Content-Disposition", "attachment;filename=" + docName.Split('=').LastOrDefault());
Response.TransmitFile(Server.MapPath("~/" + PATH_TO_WRITE_TEMP_FILES + "/" + file.Name));
Response.Buffer = true;
Response.Flush();
Response.Close();