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));                         }