ASP.NET MVC4 Redirect loop when I start my web application

Please bear with me as I am pretty new to designing websites.

When someone goes to my website they are initially sent to a log in page, which is defined in my web.config as:

<authentication mode="Forms">
  <forms loginUrl="~/Login/Index" timeout="15"/>
</authentication>

However, before they log in I check whether the database they want to access has been defined (this is something that users may want to change frequently), and if it has not I want to send them to a different form. So, my login controller index looks like:

    public ActionResult Index()
    {
        bool settingsSetUp = SupportLibrary.Settings.CompanyId != null;
        if (settingsSetUp)
            return View();
        else
            return RedirectToAction("index", "setup");

    }

However, when I try this I always get "This page has a redirect loop" in Chrome. The page will not display in Firefox of IE either. On investigation the above method is always being called numerous times, so that eventually the browser decides it is being redirected too often. If I just set it to go to the view associated with the controller (no redirection) it calls the above method 15 times. Otherwise it is called 10 times before Chrome displays the error message. Does anyone know why it is being called so many times as I think that is the root of the problem? Many thanks!

Upvotes: 0

Views: 655

Answers (1)

Richard Dalton
Richard Dalton

Reputation: 35793

You are trying to load actions that require the user to be authenticated (they either have the Authorize attribute on them or it has been applied globally) which is causing a redirect back to the login action.

Check your actions to ensure that they can be accessed without being logged in if required.

Upvotes: 2

Related Questions