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