C# 如何修复';localhost指导您的次数太多了;MVC中的错误

C# 如何修复';localhost指导您的次数太多了;MVC中的错误,c#,asp.net-mvc,C#,Asp.net Mvc,我有门户网站,当用户登录系统。我正在检查电子邮件和电话号码。如果数据库中不存在。我想重定向到“ProfilView”页面并完成电子邮件和电话字段。但我遇到了一个错误“localhost指示您的次数太多了。” 这个方法FilterAttribute,我把它放在BaseController上 这是我的BaseController,我有一个属性 [ContactInfo] public class BaseController : Controller 这是我的属性 public class Con

我有门户网站,当用户登录系统。我正在检查电子邮件和电话号码。如果数据库中不存在。我想重定向到“ProfilView”页面并完成电子邮件和电话字段。但我遇到了一个错误“localhost指示您的次数太多了。”

这个方法FilterAttribute,我把它放在BaseController上

这是我的BaseController,我有一个属性

[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);
        }
    }
公共类ContactInfoAttribute:ActionFilterAttribute{
公共覆盖无效OnActionExecuting(ActionExecutingContext filterContext)
{
if(filterContext==null | | filterContext.HttpContext==null | | filterContext.HttpContext.Request==null)
返回;
var workContext=EngineContext.Current.Resolve();
var customer=workContext.CurrentUser;
如果(客户!=null)
{
if(customer.PhoneNumber==null | | customer.Email==null)
{
RouteValueDictionary redirectTargetDictionary=新建RouteValueDictionary();
redirectTargetDictionary.Add(“action”、“ProfileView”);
redirectTargetDictionary.Add(“控制器”、“帐户”);
filterContext.Result=新的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);
        }
    }
公共类ContactInfoAttribute:ActionFilterAttribute
{
公共覆盖无效OnActionExecuting(ActionExecutingContext filterContext)
{
如果(filterContext==null | | filterContext.HttpContext==null | | filterContext.HttpContext.Request==null||
(filterContext.ActionDescriptor.ActionName==“ProfileView”&&filterContext.ActionDescriptor.ControllerDescriptor.ControllerName==“Account”))
返回;
var workContext=EngineContext.Current.Resolve();
var customer=workContext.CurrentUser;
如果(客户!=null)
{
if(customer.PhoneNumber==null | | customer.Email==null)
{
RouteValueDictionary redirectTargetDictionary=新建RouteValueDictionary();
redirectTargetDictionary.Add(“action”、“ProfileView”);
redirectTargetDictionary.Add(“控制器”、“帐户”);
filterContext.Result=新的RedirectToRouteResult(redirectTargetDictionary);
}
}
base.OnActionExecuting(filterContext);
}
}

您的重定向导致重定向(导致重定向(导致重定向))等。。。你应该只需要一个重定向,对吗?加载Chrome。转到开发人员工具,网络选项卡。单击
保存日志
。加载页面。现在您将看到重定向。我将推测
AccountController
继承自
BaseController
,而它不应该继承。