You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET MVC提交OTP时出现Localhost重定向次数过多错误

重定向过多问题定位

你这个循环跳转的核心原因很明确:代码里唯一写死的重定向逻辑是GET版RequestForJob中,JobTitle为空就跳Index,只要请求走到这个分支,再碰到Index页默认跳招聘页的逻辑,就会形成来回302的死循环。提交OTP时会触发这个分支,是两个代码问题叠出来的:

  • 第一个问题:你给整个form固定加了enctype="multipart/form-data",这个编码格式是专门给文件上传用的,OTP分支里根本没有文件上传控件,提交时ASP.NET MVC的模型绑定很容易解析失败,导致JobTitle、手机号、邮箱这些普通字段绑定为null,你代码里又没做参数校验,JobTitle为null的时候根本没拦住,直接触发重定向。
  • 第二个问题:你所有POST请求处理完都是直接return View,没走Post-Redirect-Get模式,提交OTP后浏览器地址栏停留在/Home/RequestForJobVerify这个POST路径上,只要有全局过滤器(比如登录校验、异常拦截)触发跳转,因为当前路径没带JobTitle参数,就会直接打到GET版RequestForJob的空参数重定向逻辑,触发循环。

另外你代码里还有个功能bug:OTP页的「重发OTP」按钮提交的请求里没有Resume文件,进POST版RequestForJob的时候Resume是null,直接跳过了SendOtp的逻辑,点重发根本发不出新验证码。

修复步骤
  1. 把表单拆成两个独立的form:简历提交的form保留enctype="multipart/form-data",OTP验证的form用默认的application/x-www-form-urlencoded编码,别用文件上传格式,解决模型绑定失败的问题。
  2. 所有Action开头加参数校验:只要检测到JobTitle为空,直接返回400或者跳转到职位列表页,不要往下走渲染逻辑。
  3. 改重发OTP的判断逻辑:不要靠Resume是否为null判断要不要发验证码,加个显式的参数标识是重发请求,只要带了手机号邮箱就直接调SendOtp,跳过文件上传步骤。
  4. POST逻辑处理完不要直接return View,验证失败就RedirectToAction跳回GET版RequestForJob,用TempData传用户填的信息和错误提示,别让地址栏停留在POST路径上。
  5. 要是改完还出问题,开浏览器F12选Network面板,勾上Preserve log复现问题,看循环跳转的两个路径具体是什么,就能确认是不是Index页或者全局过滤器还有额外的跳转逻辑。

内容的提问来源于stack exchange,提问作者Ashwek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 22:57:26