c# - 如何修复“本地主机指示您太多次”。MVC 中的错误
问题描述
我有门户网站,当用户登录系统时。我正在检查电子邮件和电话号码。如果数据库中不存在。我想重定向到“ProfilView”页面并完成电子邮件和电话字段。但是我收到了这个错误“localhost 指示你的次数太多了。”
这个方法 FilterAttribute 和我把 BaseController
这是我的 BaseController,我有 Attribute
[ContactInfo]
public class BaseController : Controller
这是我的属性
public class ContactInfoAttribute : ActionFilterAttribute {
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (filterContext == null || filterContext.HttpContext == null || filterContext.HttpContext.Request == null)
return;
var workContext = EngineContext.Current.Resolve<IWorkContext>();
var customer = workContext.CurrentUser;
if (customer != null)
{
if (customer.PhoneNumber == null || customer.Email == null)
{
RouteValueDictionary redirectTargetDictionary = new RouteValueDictionary();
redirectTargetDictionary.Add("action", "ProfileView");
redirectTargetDictionary.Add("controller", "Account");
filterContext.Result = new RedirectToRouteResult(redirectTargetDictionary);
}
}
base.OnActionExecuting(filterContext);
}
}
解决方案
您的代码导致递归重定向。因此,从过滤器中的重定向逻辑中排除ProfileView
操作。
public class ContactInfoAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (filterContext == null || filterContext.HttpContext == null || filterContext.HttpContext.Request == null ||
(filterContext.ActionDescriptor.ActionName == "ProfileView" && filterContext.ActionDescriptor.ControllerDescriptor.ControllerName == "Account"))
return;
var workContext = EngineContext.Current.Resolve<IWorkContext>();
var customer = workContext.CurrentUser;
if (customer != null)
{
if (customer.PhoneNumber == null || customer.Email == null)
{
RouteValueDictionary redirectTargetDictionary = new RouteValueDictionary();
redirectTargetDictionary.Add("action", "ProfileView");
redirectTargetDictionary.Add("controller", "Account");
filterContext.Result = new RedirectToRouteResult(redirectTargetDictionary);
}
}
base.OnActionExecuting(filterContext);
}
}
推荐阅读
- javascript - 向每个元素添加多个事件侦听器,从而导致多个 ajax 调用
- amazon-web-services - AWS:仅将最新文件从 S3 发送到 Amazon MQ
- javascript - 为什么我在全局定义这个变量时没有定义它?(javascript, p5.js)
- python - 使用 psycopg2 将数据从 python 上传到 postgresql 时将“nan”替换为空白
- bash - 为什么 echo 命令会返回这种结果?
- java - 如何使用简单的 java 命令运行 Maven 项目
- json - Kotlin Json 解析
- excel - 如何在Excel中引用完整的列,其中有一个值
- c - fopen 在 main 中有效,但在另一个文件中的函数中无效
- haskell - 显示自定义复杂数据类