服务器不能在HTTP头发送后设置状态- ELMAH
本文关键字:设置 状态 ELMAH 不能 HTTP 头发 服务器 | 更新日期: 2023-09-27 18:07:51
我一直通过ELMAH收到此错误。即使程序完成了预期的操作,我仍然通过ELMAH收到这个错误,我想知道为什么并修复它。我已经浏览了其他线索,并尝试使用这些建议,但目前为止我所读到的似乎都不起作用。
它的目的是创建一个excel文档,然后将用户重定向到他们刚刚访问的页面。
ActionResult:
public ActionResult ExportClaimNumberReport(int ClientID, string ClaimNo) {
ClaimNumberViewModel model = ClaimNumberReport(ClientID, ClaimNo);
CreateExcelFile.CreateExcelDocument(
model.ReportData.ToList(),
model.ReportDescription + (".xlsx"),
HttpContext.ApplicationInstance.Response);
ViewBag.client = client;
Response.Buffer = true;
Response.Redirect(Request.UrlReferrer.ToString());
if (!Response.IsRequestBeingRedirected) {
Response.Redirect("/Error/ErrorHandler");
}
return RedirectToAction("ErrorHandler", "Error");
}
如果你需要更多的信息,尽管告诉我
你会得到错误,因为你做了2个重定向。
这里Response.Redirect(Request.UrlReferrer.ToString());
然后在这里:
return RedirectToAction("ErrorHandler", "Error");
所以第一个重定向将写一个重定向头到响应流,然后第二个将尝试再次这样做,但显然你不能发送http头到浏览器两次,所以它抛出一个异常。然而,用户不会注意到,因为当抛出异常时,浏览器已经被告知重定向到其他地方。
你要做的就是从你的控制器动作调用重定向方法作为返回语句。
所以替换所有这些:
Response.Redirect(Request.UrlReferrer.ToString());
if (!Response.IsRequestBeingRedirected) // this would always be false anyway
{
Response.Redirect("/Error/ErrorHandler");
}
return RedirectToAction("ErrorHandler", "Error");
与这个:return Redirect(Request.UrlReferrer.ToString())
虽然你不清楚为什么要重定向浏览器到参考页面