MVC4 - 在发送HTTP标头后,服务器无法设置状态

All*_*ing 1 redirect asp.net-mvc-4

从MVC3转移到MVC4后,此行

Return Redirect("https://secure.mysite.com/account/signup")
Run Code Online (Sandbox Code Playgroud)

开始抛出异常

Server cannot set status after HTTP headers have been sent
Run Code Online (Sandbox Code Playgroud)

这是方法

Function signup() As ActionResult

    Dim HTTP_HOST = Request.ServerVariables("HTTP_HOST")

    If Request.IsSecureConnection = False Or HTTP_HOST <> "secure.mysite.com" Then
        Return Redirect("https://secure.mysite.com/account/signup")
    End If


    'more code here

     Return View(_viewModel)
End Function
Run Code Online (Sandbox Code Playgroud)

无法解决这个问题,因为上面的返回重定向行是第一次回送会话.

Nei*_*son 8

我的代码中有一个类似的问题,我可以看到ELMAH日志记录: System.Web.HttpException (0x80004005): Server cannot set status after HTTP headers have been sent.

我认为异常是因为Response.End和Response.Redirect不会导致MVC应用程序中的线程中止(Response.Redirect实际上不是MVC管道的一部分).

尝试:

return new RedirectResult("https://secure.mysite.com/account/signup", true);
Run Code Online (Sandbox Code Playgroud)