C# 发送HTTP头后,服务器无法设置状态-ELMAH
我一直通过ELMAH收到这个错误。即使程序完成了预期的操作,我仍然通过ELMAH收到这个错误,我想知道原因并修复它。我已经阅读了其他的文章,并尝试使用这些建议,但到目前为止,我读到的任何东西似乎都不起作用 它的预期操作是创建一个excel文档,然后将用户重定向到他们刚才所在的页面 行动结果:C# 发送HTTP头后,服务器无法设置状态-ELMAH,c#,asp.net-mvc,error-handling,C#,Asp.net Mvc,Error Handling,我一直通过ELMAH收到这个错误。即使程序完成了预期的操作,我仍然通过ELMAH收到这个错误,我想知道原因并修复它。我已经阅读了其他的文章,并尝试使用这些建议,但到目前为止,我读到的任何东西似乎都不起作用 它的预期操作是创建一个excel文档,然后将用户重定向到他们刚才所在的页面 行动结果: public ActionResult ExportClaimNumberReport(int ClientID, string ClaimNo) { ClaimNumberViewModel m
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())
虽然您将浏览器重定向回引用页面的原因尚不清楚。您将收到错误,因为您正在执行两次重定向 一到这里
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())
虽然您将浏览器重定向回引用页面的原因尚不清楚。您将收到错误,因为您正在执行两次重定向 一到这里
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())
虽然您将浏览器重定向回引用页面的原因尚不清楚。您将收到错误,因为您正在执行两次重定向 一到这里
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())
虽然您将浏览器重定向回引用页面的原因尚不清楚。您好,我的原始代码就是您建议的代码。我意识到我的代码很奇怪,但我之所以使用它,是因为我正在尝试一些在线发布的解决方案。然而,我意识到我甚至不需要返回任何东西,所以我将ActionResult制作成了一个voidHi,我拥有的原始代码就是您建议的代码。我意识到我的代码很奇怪,但我之所以使用它,是因为我正在尝试一些在线发布的解决方案。然而,我意识到我甚至不需要返回任何东西,所以我将ActionResult制作成了一个voidHi,我拥有的原始代码就是您建议的代码。我意识到我的代码很奇怪,但我之所以使用它,是因为我正在尝试一些在线发布的解决方案。然而,我意识到我甚至不需要返回任何东西,所以我将ActionResult制作成了一个voidHi,我拥有的原始代码就是您建议的代码。我意识到我的代码很奇怪,但我之所以使用它,是因为我正在尝试一些在线发布的解决方案。然而,我意识到我甚至不需要归还任何东西,所以我把ActionResult变成了一个空白