2011-08-30 10 views
28

Ho uno strano errore che non ho mai incontrato prima.viene reindirizzato a loginUrl errato -> account/login anziché account/LOGON

ho assicurato un controller con:

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

Quando un utente non-admin tenta di accedere a qualsiasi contenuto protetto, vengono reindirizzati a:

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

nota: conto/login e NON account/accesso

L'azione AccountController.Login non esiste.

web.config ha:

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

posso, naturalmente, implementare l'azione di login e reindirizzare ad accesso. Sono solo perplesso e vorrei sapere perché questo accade.

risposta

25

Cerca il tuo progetto per il login - deve essere specificato da qualche parte. C'è qualche altro valore web.config che sovrascrive questo (forse guardando una radice figlio e viene utilizzato il valore genitore) Inoltre c'è qualche reindirizzamento che sta accadendo? Ci sono dei valori di default impostati nel web.config della tua macchina? L'URL predefinito sul progetto è impostato su/login?

Installa glimpse route debugger per vedere quale percorso viene utilizzato per questa pagina.

EDIT: Un po 'più di ricerca produce un problema noto. Controlla questo link: ASP.NET MVC issue with configuration of forms authentication section

C'è un bug in mvc 3 beta - stai eseguendo i bit beta? Notate anche l'elemento di cui l'url sopra per bit RTM:

<add key="loginUrl" value="~/LogOn" /> 

Verificate anche http://forums.asp.net/p/1616153/4138366.aspx

EDIT 2

Di seguito è riportato un commento solida di una potenziale fonte di questo da @santiagoIT (upvote il suo commento per favore se le specifiche ti aiutano)

Oggi ho scoperto la radice di questo problema: ho avuto aggiunto 'dipendenza deployable' su 'Pagine Web ASP.NET con Razor Syntax'. Questo aggiunge un riferimento a: WebMatrix.Data.dll Questo assembly ha una classe con un costruttore statico che effettua le seguenti operazioni: static FormsAuthenticationSettings() {FormsAuthenticationSettings.LoginUrlKey = "loginUrl"; FormsAuthenticationSettings.DefaultLoginUrl = "~/Account/Login";} Questo spiega!

+0

Ho effettuato la ricerca per l'accesso ma non è risultato niente. Proverò i tuoi suggerimenti domani. Sto usando wcf web api che è l'unica cosa che considererei fuori dall'ordinario. ancora molto perplesso ... – santiagoIT

+0

vedere le modifiche sopra –

+0

Thx! Ho aggiunto all'appset e ha funzionato. Spero davvero di non utilizzare mvc 3 beta. My System.Web.Mvc.dll mostra v3.0.0.0. È questa la versione beta? – santiagoIT

3

questo ha funzionato per me e sto usando MVC 3

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

Inoltre ho trovato che l'aggiunta la parte ripercorrono alla configurazione web (solo durante il debug della configurazione) ha contribuito ad accelerare il debug come era per l'autenticazione per QUALSIASI pagina.

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

ho risolto in questo modo

1) Andare ot IIS

2) Selezionare il progetto

3) Fare clic su "Autenticazione"

4) Fare clic su " Autenticazione anonima "> Modifica> selezionare" Identità del pool di applicazioni "invece di" Utente specifico ".

5) Fatto.

2

Basta semplicemente rimuovere la DLL WebMatrix se sono presenti nella cartella bin implementata.

Problemi correlati