Windows认证服务器无法在HTTP标头已发送后设置状态。

4

我有一个C#的n层应用程序。通常情况下,我们使用表单认证,一切都工作得很好,但当我们尝试在Windows上设置身份验证时,在某些情况下(主要是在管理中,例如当您尝试编辑用户并且客户端调用服务器以获取用户详细信息时),它开始抛出以下异常。在Internet Explorer中完全不会发生这种情况。在Firefox和Chrome中,每次都会抛出异常。

System.Web.HttpException (0x80004005): 
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.HttpStatusCodeResult.ExecuteResult(ControllerContext context)
at System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult)
at System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName)

请问,你能给我一些建议,可能会出现什么问题以及如何解决?谢谢。

1个回答

0

嗯,你需要查看你的代码并确定哪些内容被写入了输出流。问题在于,在设置状态码之前,某些内容已经被写出来了,而ASP.NET不允许这样做。

至于为什么会在FF和Chrome上发生,你是否有任何代码尝试识别使用的浏览器,并向不同的浏览器发送不同的内容?


是的,我这样做了,但没看到任何可能导致错误的东西,这是我做的第一件事。我在想,如果有什么问题,即使身份验证设置为表单,也应该出现问题吧?不,我只在JavaScript UI中对不同的浏览器进行不同的操作。 - user1728989

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接