Response.Redirect 无法访问的代码
Response.Redirect unreachable code
有没有什么情况可以给定绿色叫红色的?
这看起来像是单元测试覆盖率,它应该仍然到达代码,因为方法本身还没有返回。但是,如果您使用的自动化测试实际上参与了 HTTP 上下文,那么在响应结束时它不会到达其他代码。
您可以通过将 false
传递给 Redirect()
来防止响应结束:
Response.Redirect(PageRedirect, false);
但是,这可能是个坏主意。考虑这段代码的逻辑流程。重定向应该 end 响应。如果有更多的服务器端处理要完成,您可以选择不结束它,但这通常很不直观。但是,如果该服务器端处理是 另一个重定向 ,那么它应该做什么呢?重定向用户两次?重定向一次而忽略第二次?忽略第一个并执行第二个重定向?这很不直观。
我建议组织代码,使响应 在重定向中终止 。虽然从技术上讲它不是该方法的 return
,但在这种情况下,它在逻辑上确实应该被视为一个。
从来没有。
大多数代码分析器不会在 HttpResponse.Redirect(url)
未执行后找出代码 - 因此 compiler/analizers 会抱怨红色代码可能是错误的。
实际上它总是抛出 ThreadAbort
异常以避免无意中 运行 更多请求处理代码 - HttpResponse.Redirect.
有没有什么情况可以给定绿色叫红色的?
这看起来像是单元测试覆盖率,它应该仍然到达代码,因为方法本身还没有返回。但是,如果您使用的自动化测试实际上参与了 HTTP 上下文,那么在响应结束时它不会到达其他代码。
您可以通过将 false
传递给 Redirect()
来防止响应结束:
Response.Redirect(PageRedirect, false);
但是,这可能是个坏主意。考虑这段代码的逻辑流程。重定向应该 end 响应。如果有更多的服务器端处理要完成,您可以选择不结束它,但这通常很不直观。但是,如果该服务器端处理是 另一个重定向 ,那么它应该做什么呢?重定向用户两次?重定向一次而忽略第二次?忽略第一个并执行第二个重定向?这很不直观。
我建议组织代码,使响应 在重定向中终止 。虽然从技术上讲它不是该方法的 return
,但在这种情况下,它在逻辑上确实应该被视为一个。
从来没有。
大多数代码分析器不会在 HttpResponse.Redirect(url)
未执行后找出代码 - 因此 compiler/analizers 会抱怨红色代码可能是错误的。
实际上它总是抛出 ThreadAbort
异常以避免无意中 运行 更多请求处理代码 - HttpResponse.Redirect.