2015-02-12 10 views
13

Ho controllato molti post su questo errore ma non sono ancora riuscito a risolvere il problema.Errore HTTP 404.15 - Non trovato ... perché la stringa di query è troppo lunga

Ho un sito Web MVC5 semplice costruito in VS2013 con Windows 8 pro. Quando il sito è stato creato, è stata selezionata l'opzione per i singoli account. Ora devo abilitare l'autenticazione di Windows in modo che solo gli utenti di account AD possano utilizzare il sito Web e anche l'autorizzazione in modo da limitare l'accesso a determinate viste/controller a determinati gruppi di annunci.

Dopo aver selezionato il progetto Web in VS, ho aggiornato la finestra delle proprietà (F4) in modo che l'autenticazione anonima sia disabilitata e l'autenticazione di Windows sia impostata su Abilitato.

Il web.config per il progetto ora contiene le seguenti sezioni:

<system.web> 
    <authentication mode="Windows" /> 
    <compilation debug="true" targetFramework="4.5" /> 
    <httpRuntime targetFramework="4.5" /> 
    <authorization> 
     <deny users="?" /> 
    </authorization> 
    </system.web> 
    <system.webServer> 
    <modules> 
     <remove name="FormsAuthenticationModule" /> 
    </modules> 
    </system.webServer> 

accedo al sito da IIS o F5 ottengo l'errore: Errore HTTP 404,15 - Not Found Il modulo di filtraggio richiesta viene configurato per negare una richiesta in cui la stringa di query è troppo lunga. Ho notato che qualcosa è stato ripetuto per dare un ReturnUrl che è una lunga concatenazione ripetuta all'interno della stringa di query.

All'interno della sezione IIS \ Authentication, ho impostato su Disabilitato "Autenticazione anonima, impersonificazione ASP.Net e autenticazione moduli". All'interno della sezione Regole di autorizzazione di IIS.Net che ho impostato per negare "Utenti anonimi" e consentire "Tutti gli utenti"

Dove sto andando male?

risposta

20

L'unica volta in cui mi sono imbattuto in questo problema è quando ho accidentalmente aggiunto [Authorize] a un'azione figlio che è stata utilizzata nel layout. L'aggiunta di [Authorize] al tuo accesso significherebbe lo stesso effetto o semplicemente trascurando di aggiungere [AllowAnonymous] all'azione di accesso, quando il controller in cui si trova ha [Authorize] su di esso. Lungo e breve, questo è causato da qualcosa che richiede un'autorizzazione sulla pagina di accesso effettiva, che quindi ti porta a essere reindirizzato alla pagina di accesso, che necessita di autorizzazione, causandoti il ​​reindirizzamento alla pagina di accesso, ecc.

tl; dr

  1. Assicurati che il tuo segno in azione/login non ha [Authorize].
  2. Verificare che l'azione di accesso/login sia[AllowAnonymous].
  3. Assicurarsi che nessuna azione figlio utilizzata nel layout o nella pagina di accesso abbia [Authorize] o abbia [AllowAnonymous] se si trova in un controller decorato con [Authorize].
+1

Grazie Chris, ho avuto un startup.cs che stava reindirizzando account/login. La causa del problema era che ho scelto l'opzione sbagliata per l'autenticazione quando ho creato il sito Web: avevo scelto singoli account anziché l'autenticazione di Windows. Ho trovato il modo migliore per risolvere è stato quello di creare una nuova applicazione Web, scegliendo l'autenticazione di Windows, quindi confrontando la configurazione di entrambi. –

5

All'avvio potresti avere una funzione che ti reindirizza alla pagina di accesso. Devi disabilitarlo. Sono stato creato il progetto con il metodo di autenticazione predefinito che crea un account controller e i suoi dipendenti. Ora, quando ho cambiato il metodo di autenticazione in modalità Windows, ho sollevato l'errore citato. Ora l'unica cosa che ho fatto è commentare la funzione ConfigureAuth (app) nel file startup.cs

+0

E come lo faresti? – Dave

+0

Ho modificato la mia risposta aggiungendo alcuni dettagli – Mahmoud

+0

Grazie - Mi è appena successo :) – heymega

10

Ho ricevuto questo errore quando ho abilitato l'autenticazione di Windows. Volevo autorizzare l'utente sulla base del login di Windows e non voglio la pagina di login nella mia applicazione.

Ho risolto l'errore aggiungendo il seguente nel mio file di configurazione Web.

  1. sotto il tag system.web, ha cambiato l'autenticazione mode="None" di autenticazione mode="Windows"

  2. Sotto tag appSettings, compresi Aggiungi key="owin:AutomaticAppStartup" value="false"

+0

Vorrei sapere perché è necessaria la chiave appSettings perché funzioni. Giuro di averlo fatto funzionare prima senza di esso, ma ottengo l'errore "stringa di query è troppo lungo" come il richiedente domanda se non lo uso. – Zack

+3

Ero nella stessa situazione di te. Aggiungendo '' sotto '' ha fatto il trucco. Grazie! –

0

Ho avuto lo stesso problema ..

controllare sotto Proprietà del progetto ..

Anonymous Authentication=False 
Windwos Authentication=True 
Problemi correlati