我正在使用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)

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

感谢您的任何帮助或指导。

有帮助吗?

解决方案

我发现并解决了问题。我使用的是USESSL属性,该属性将控制器切换到HTTPS的任何动作重定向。当我删除它可以正常工作时,我真的不需要登录时SSL,因此我将属性应用于所有其他操作,而不是控制器,并且会阻止异常发生。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top