2012-02-01 19 views
6

Abbiamo un sito intranet semplice in MVC3 e framework di entità. Tutto funziona bene per l'esecuzione in debug da Visual Studio. Quando pubblico il sito sul mio server Web IIS7.5 locale o su una casella di sviluppo sullo stesso dominio, viene richiesto un nome utente e una password e non si collegherà al sito. E 'solo restituisce un errore di 401,1 e mostra curiosamentePerché l'autenticazione Windows del mio sito Intranet MVC3 non funziona quando pubblicata

Logon Method Not yet determined 
Logon User Not yet determined 

Ho verificato che l'autenticazione di Windows è abilitata e l'autenticazione anonima è disattivata. l'applicazione sta utilizzando applicationPoolIdentity ma l'ho provato con i servizi di rete senza alcuna differenza. Il webconfig include

<authentication mode="Windows" /> 

e l'ho provato con e senza la sezione di autorizzazione.

<authorization> 
    <allow users="*" /> 
</authorization> 

L'unica altra cosa che ho trovato on-line coinvolto cambiando una voce del Registro, ma questo alla fine sarà su un server di produzione, quindi non sono cambiamenti confortevoli realizzazione del Registro di sistema solo per questo.

in esecuzione a livello locale con questo blocco di codice restituisce tutte le informazioni previste

<div id="title"> 
    <h4> Environment.UserName: @Environment.UserName 
    @DateTime.Now.Millisecond.ToString() </h4> 
    @foreach (var role in Roles.GetRolesForUser()) 
    { 
     role.ToString(); <br /> 
    } 
</div> 
<div id="logindisplay"> 
    Context.User.Identity.Name <strong>@Context.User.Identity.Name</strong>!<br /> 
    @Environment.UserDomainName 
</div> 

Si tratta di un'applicazione Web MVC3. Gli switch di autenticazione IIS sono

Anonymous Authentication  Disabled 
ASP.NET Impersonation  Disabled 
Forms Authentication   Disabled 
Windows Authentication  Enabled 

Altre idee o cose che mi mancano?

risposta

3

Questo articolo su MSDN illustra come impostare un IIS 7 MVC3 Intranet Sito web: http://msdn.microsoft.com/en-us/library/gg703322(VS.98).aspx

Il pezzo interessante che si riferisce a voi è molto probabilmente l'ultima sezione sulla rappresentazione. Se esegui il tuo sito come Autenticazione di Windows ma Disabilita non funzionante, leggerai/eseguirai i file per il sito web utilizzando l'identità autenticata. Ciò significa che ogni utente che vuole accedere al sito avrà bisogno di permessi per cartelle/file.

Per evitare ciò, utilizzare Auth di Windows per consentire agli utenti di autenticarsi ma utilizzare la rappresentazione per utilizzare una singola identità per accedere alla cartella/ai file.

+0

Sì, avevo visto quell'articolo e questo tipo di problemi risolve il problema rendendo il sito un'applicazione sotto il sito Web predefinito. Speravo di averlo come app web stand-alone, ma questo è l'unico modo in cui sono riuscito a farlo funzionare anche se ha causato alcuni problemi di percorso che devo ancora risolvere. Grazie. – Brian

+0

Contento di poterti aiutare! Che tipo di problemi di percorso? Sembra un problema interessante. – AdamV

+0

eseguito in percorsi relativi di debug funziona bene ma l'app viene confusa durante l'esecuzione sul server, quindi ho cambiato i percorsi assoluti solo per farlo visualizzare le immagini statiche. L'intento è quello di avviare app web e desktop dal portale e i percorsi per le app desktop vengono incasinati. Le immagini penso di poter risolvere il problema con una directory virtuale. I percorsi delle app non sono sicuro. Sto usando process.start per avviarli. Potrei iniziare un'altra domanda per questo quando uscirò da una crisi diversa. :-) – Brian

1

È necessario configurarlo in IIS per utilizzare l'autenticazione di Windows.

  1. aprire il Gestione IIS
  2. Vai al punto in cui la vostra applicazione risiede in IIS
  3. In contenuti doppio clic autenticazione
  4. Abilita autenticazione di Windows e disattivare Anonymous Autenticazione

Se si esegue solo questo sull'AppPool, le impostazioni dell'applicazione lo sovrascriveranno.

Quando si dice:

Ho verificato che l'autenticazione di Windows è abilitata e l'autenticazione anonima è disattivata.

Dove l'hai impostato esattamente? Non sei sicuro di quale sistema operativo stai eseguendo sul computer in cui ti viene richiesto, ma alcuni tipi di Windows non supportano l'autenticazione di Windows (ad esempio, Windows 7 Home non lo fa).

+0

L'autenticazione di Windows è impostata sul sito Web. Si tratta di una intranet aziendale e tutti i client eseguono Windows 7 pro. – Brian

+0

Puoi elencare tutti gli switch di autenticazione e le loro impostazioni per il tuo sito web? Inoltre, questo è un sito Web o un'applicazione web? –

+0

ha aggiornato l'op con le informazioni. è un'applicazione mvc3. – Brian

2

Sembra che l'autenticazione di Windows funzioni, dal momento che ti vengono richieste le credenziali quando apri la pagina ... dovresti inserire le tue credenziali e dovrebbe portarti alla tua pagina web ... o il problema è che tu non è in grado di aprire la pagina dopo aver inserito le credenziali corrette?

Quello che vorrei provare primo è quello di modificare la modalità di pool di applicazioni da Classic a integrato (o viceversa).

Quindi, sembra che le macchine siano in qualche dominio? In tal caso, controlla di mettere le credenziali giuste. Dovresti inserire <domain>\<your_username> come nome utente. Inoltre, se ciò non funziona, prova ad aggiungere e rimuovere la tua macchina dal dominio e riprova. Potrebbero esserci altre idee, fammi sapere come va e, se possibile, qual è l'output del comando nltest.exe /SC_QUERY:domain_name?

1

Ho lo stesso problema. Quando si crea una nuova applicazione sotto siti Web predefiniti, le cose funzionano correttamente. Ma quando creo un nuovo sito Web e metto i file lì sotto non riesco a farlo funzionare. Continuo a ricevere un prompt di accesso. Sto utilizzando lo stesso pool di applicazioni per il mio nuovo sito e ho configurato le autorizzazioni di directory per consentire il pieno controllo su iis_isuser e altri poiché questa è una macchina di sviluppo.

Problemi correlati