Asp.Net MVC中Return Redirect重定向功能无法正常工作问题求助
ASP.NET MVC Redirect方法不生效问题解决方案
报错信息:Failed to load response data: No data found for resource with given identifier
对应控制器代码:[HttpGet("redirectUser/{PlanId}")] [ValidateModelState] public async Task<IActionResult> redirectUser(Guid PlanId) { //.... return Redirect("http://www.google.com"); } }
- 排查异步逻辑执行流程:首先在
return Redirect代码行打断点,确认代码实际执行到了重定向返回逻辑,排除注释部分的业务代码抛出异常、提前返回其他结果的可能。同时检查异步方法中所有异步操作是否都添加了await关键字,避免异步方法异常终止导致响应异常。 - 确认请求发起方式:如果该接口是通过AJAX(fetch/axios/jQuery异步请求等)调用,浏览器不会自动执行302重定向动作,会拦截响应导致报错。解决方法有两种:
- 把请求改为普通同步跳转,比如用a标签直接指向该接口地址、通过form表单提交触发跳转
- 前端代码中捕获接口的302响应状态,手动调用
window.location.href = 目标跳转地址实现跳转
- 排查
[ValidateModelState]自定义过滤器影响:临时注释该过滤器特性后测试重定向是否生效,排查过滤器内部是否在模型校验不通过、权限校验不通过时直接返回了异常响应,没有走到控制器的返回逻辑。 - 排除跨域与安全策略限制:先尝试重定向到和当前站点同域的地址做测试,如果同域地址可以正常跳转,说明是跨域安全策略拦截了跨域重定向请求,可根据你的业务场景调整站点跨域配置规则。
内容的提问来源于stack exchange,提问作者Raneu
相关产品推荐
相关产品推荐

