'being redirected to wrong loginUrl -> account/login instead of account/LOGON

I have a strange error I have never run into before.

I secured a controller with:

[Authorize(Roles = "admin")] 
public class LoggingController : Controller

When a non-admin user tries to access any protected content, they are redirected to:

http://localhost:50501/Account/Login?ReturnUrl=%2flogging

note: account/login and NOT account/logon

The AccountController.Login action does not exist.

web.config has:

<authentication mode="Forms">
    <forms loginUrl="~/Account/LogOn" timeout="2880" />
</authentication>

I can of course implement the Login action and redirect to Logon. I am just puzzled and would like to know why this happens.



Solution 1:[1]

This worked for me and I'm using MVC 3

<appSettings>
    <add key="loginUrl" value="~/Account/LogOn" />
</appSettings>
<system.web>
    <authentication mode="Forms">
        <forms loginUrl="~/Account/LogOn" name=".ASPXFORMSAUTH" />
    </authentication>
</system.web>

Also I found that adding the followinf part to the web config (only during debugging the config) helped speed up my debugging as had to authenticate for ANY page.

<authorization>
    <deny users="?" /> <!-- remove after debugging -->
</authorization>

Solution 2:[2]

Just simply remove the WebMatrix dll if they are present in your deployed bin folder.

Solution 3:[3]

I fixed it this way

1) Go ot IIS

2) Select your Project

3) Click on "Authentication"

4) Click on "Anonymous Authentication" > Edit > select "Application pool identity" instead of "Specific User".

5) Done.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Andy Vennells
Solution 2 Compiler
Solution 3 Baby Groot