mvc中用response.redirect跳转后,后续代码还会执行的问题
来源:互联网 发布:java语句执行顺序 编辑:程序博客网 时间:2024/04/30 07:18
model.JobInfo = js.GetJob(id);
if (model.JobInfo == null)
{
Response.Redirect(“/”, true);
}
model.CompInfo = (new CompanyService()).GetCompInfo(model.JobInfo.CompanyID);
这段代码是一个控制器动作中的一段代码。代码很简单,就是当model.JobInfo == null时直接跳转到首页,而不再执行这个控制器动作的后续代码。然而我在看错误日志的时候却看到了执行这个页面时提示未将对象引用设置到对象的实例。通过错误重现,发现 model.CompInfo = (new CompanyService()).GetCompInfo(model.JobInfo.CompanyID);在这行报的这个错。刚开始是以为GetCompInfo这个函数有问题,可是通过输出中间变量发现根本就没进入到这个函数就报错了。后来在model.CompInfo = (new CompanyService()).GetCompInfo(model.JobInfo.CompanyID);这行之前添加了一行代码:EventLog.WriteLog(“” + (model.JobInfo == null));居然输出的是true。我晕,这不意味着程序虽然执行了Response.Redirect(“/”, true);跳转,但是后续代码还是执行了。以前处理过类似问题。知道这个函数:
public void RedirectUrl(string url)
{
Response.Clear();//这里是关键,清除在返回前已经设置好的标头信息,这样后面的跳转才不会报错
Response.BufferOutput = true;//设置输出缓冲
EventLog.WriteLog(“” + Response.IsRequestBeingRedirected);
if (!Response.IsRequestBeingRedirected) //在跳转之前做判断,防止重复
{
Response.Redirect(url, true);
}
}
可以解决此问题。高兴的用RedirectUrl(”/”)换掉Response.Redirect(“/”, true)后,以为问题会解决。可是通过检查日志输出,问题依然存在。
最终使用return RedirectToAction(“index”, “home”);替换 Response.Redirect(“/”, true)才解决此问题。
发现在mvc中使用Response.Redirect做跳转很令人蛋疼。容易出现虽然跳转能够成功,但是后续代码还会执行的情况。只是用return RedirectToAction(“index”, “home”)这种做跳转我以前也遇到过后续代码还会执行的情况。换Response.Redirect(url, true)这种解决了问题。有点晕,原来的return RedirectToAction(“index”, “home”)这种有问题的相关代码找不到了。否则可以好好比较下,到底问题出现在哪里。先放这里吧
- mvc中用response.redirect跳转后,后续代码还会执行的问题
- ASP.net MVC Response.End(); 之后的代码还会执行
- mvc 使用response.redirect跳转地址问题
- Response.Redirect跳转后,框架内显示
- Response.Redirect的问题
- JSP中response.sendRedirect()后的代码为什么还能执行?
- JSP中response.sendRedirect()后的代码为什么还能执行
- Response Redirect(代码强制跳转)
- 关于 context.Response.Redirect 跳转问题
- 关于 context.Response.Redirect 跳转问题 .
- Android finish方法后代码还会执行?
- java 抛出异常后,还会执行后面代码吗?
- 关于Response.Redirect 端口不一致的跳转
- 关于Response.Redirect的问题
- Spring mvc redirect跳转路径问题
- 使用Response.Redirect跳转时显示提示内容的问题该怎么解决
- C++调用Python脚本遇到的问题记录《后续还会添加 方便查阅》
- Response.Redirect 关于页面跳转
- 人事面试
- 单调红中一万年
- PowerDesigner生成SQL ER图 说明文档
- Cocos2d-lua(四)加载CocosStudio导出的UI界面
- java内存区域
- mvc中用response.redirect跳转后,后续代码还会执行的问题
- Java截取字符串的方法substring
- ionic微信对接
- centos7 安装jdk和tomcat详细过程
- php 去除html标签 和 css样式
- 运行时常量池溢出
- 一头扎进算法导论-快速排序(挖坑填数策略)
- Java Interceptor和Filter介绍
- opencv 车道线检测(二)