我一直通过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");
}
如果您需要更多信息,请告诉我
答案 0 :(得分:3)
您将收到错误,因为您正在进行2次重定向。
来到这里
Response.Redirect(Request.UrlReferrer.ToString());
然后再来一次:
return RedirectToAction("ErrorHandler", "Error");
因此,第一个重定向会将重定向标头写入响应流,然后第二个重定向将尝试再次执行,但显然您无法将http标头发送到浏览器两次,因此会引发异常。然而,用户不会注意到,因为在抛出异常时,浏览器已经被告知要在其他地方重定向。
您要做的只是将Redirect方法作为控制器操作的return语句。
所以替换所有这些:
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())
虽然您将浏览器重定向回引用页面的原因尚不清楚。