代码之家  ›  专栏  ›  技术社区  ›  Dustin Laine

注销异常淹没elmah

  •  1
  • Dustin Laine  · 技术社区  · 14 年前

    我正在使用ASP.NET成员身份,尤其是MVC项目中包含的成员身份代码的副本。我还使用elmah记录异常。当人们签退时,我会被下面的内容淹没。

    System.Web.HttpException: Server cannot set status after HTTP headers have been sent.
    

    这是发送的堆栈跟踪

    System.Web.HttpException: Server cannot set status after HTTP headers have been sent.
       at System.Web.HttpResponse.set_StatusCode(Int32 value)
       at System.Web.HttpResponseWrapper.set_StatusCode(Int32 value)
       at System.Web.Mvc.HandleErrorAttribute.OnException(ExceptionContext filterContext)
       at System.Web.Mvc.ControllerActionInvoker.InvokeExceptionFilters(ControllerContext controllerContext, IList`1 filters, Exception exception)
       at System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName)
       at System.Web.Mvc.Controller.ExecuteCore()
       at System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext)
       at System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext)
       at System.Web.Mvc.MvcHandler.<>c__DisplayClass8.<BeginProcessRequest>b__4()
       at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass1.<MakeVoidDelegate>b__0()
       at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass8`1.<BeginSynchronous>b__7(IAsyncResult _)
       at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.End()
       at System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult)
       at System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result)
       at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
       at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
    

    我似乎找不到任何理由。它不会给最终用户带来问题,但仍希望解决/了解它。

    感谢您的帮助或指导。

    1 回复  |  直到 14 年前
        1
  •  0
  •   Dustin Laine    14 年前

    我已经找到并解决了这个问题。我使用的是usessl属性,它将控制器的任何操作重定向到https。当我删除它工作正常时,我真的不需要在注销时使用ssl,所以我将该属性应用于所有其他操作,而不是控制器,它可以阻止异常的发生。