Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 发送HTTP头后,服务器无法设置状态-ELMAH_C#_Asp.net Mvc_Error Handling - Fatal编程技术网

C# 发送HTTP头后,服务器无法设置状态-ELMAH

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

我一直通过ELMAH收到这个错误。即使程序完成了预期的操作,我仍然通过ELMAH收到这个错误,我想知道原因并修复它。我已经阅读了其他的文章,并尝试使用这些建议,但到目前为止,我读到的任何东西似乎都不起作用

它的预期操作是创建一个excel文档,然后将用户重定向到他们刚才所在的页面

行动结果:

 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变成了一个空白