質問

私は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