asp.net mvc 3 - Server cannot set status after HTTP headers have been sent in my C# .NET MVC Application while exporting datatable to spreadsheet -
i trying export datatable spreadsheet. getting exception
server cannot set status after http headers have been sent.
on line
httpcontext.response.statuscode = ex httpexception ? ((httpexception)ex).gethttpcode() : 500;
please can solving this...
for reference adding full code here:::: code of export function
public static void exporttospreadsheet(datatable table, string name) { httpcontext context = httpcontext.current; context.response.clear(); foreach (datacolumn column in table.columns) { context.response.write(column.columnname + ";"); } context.response.write(environment.newline); foreach (datarow row in table.rows) { (int = 0; < table.columns.count; i++) { context.response.write(row[i].tostring().replace(";", string.empty) + ";"); } context.response.write(environment.newline); } string saveasfilename = string.format("results-{0:d}.xls", datetime.now); context.response.contenttype = "application/vnd.ms-excel"; context.response.addheader("content-disposition", string.format("attachment;filename={0}", saveasfilename)); context.response.end(); }
the exception got catched in global.asax.cs
in application_error
function
protected void application_error(object sender, eventargs e) { var httpcontext = ((mvcapplication)sender).context; //var currentcontroller = " "; //var currentaction = " "; string currentcontroller; string currentaction; var currentroutedata = routetable.routes.getroutedata(new httpcontextwrapper(httpcontext)); currentcontroller = ""; currentaction = ""; if (currentroutedata != null) { if (currentroutedata.values["controller"] != null && !string.isnullorempty(currentroutedata.values["controller"].tostring())) { currentcontroller = currentroutedata.values["controller"].tostring(); } if (currentroutedata.values["action"] != null && !string.isnullorempty(currentroutedata.values["action"].tostring())) { currentaction = currentroutedata.values["action"].tostring(); } } else { currentcontroller = "home"; currentaction = "index"; } var ex = server.getlasterror(); var controller = new errorcontroller(); var routedata = new routedata(); var action = "error"; if (ex httpexception) { var httpex = ex httpexception; switch (httpex.gethttpcode()) { case 400: action = "badrequest"; break; case 401: action = "unauthorized"; break; case 403: action = "forbidden"; break; case 404: action = "notfound"; break; case 408: action = "requesttimeout"; break; case 500: action = "internalservererror"; break; case 502: action = "badgateway"; break; case 503: action = "serviceunavailable"; break; case 504: action = "gatewaytimeout"; break; } } httpcontext.clearerror(); httpcontext.response.clear(); // on below line exception occurs httpcontext.response.statuscode = ex httpexception ? ((httpexception)ex).gethttpcode() : 500; httpcontext.response.tryskipiiscustomerrors = true; routedata.values["controller"] = "error"; routedata.values["action"] = action; controller.viewdata.model = new handleerrorinfo(ex, currentcontroller, currentaction); ((icontroller)controller).execute(new requestcontext(new httpcontextwrapper(httpcontext), routedata)); // set error details in handleerrorinfo model send email notification errorcontroller.sethandleerrorinfomodel(new handleerrorinfo(ex, currentcontroller, currentaction)); }