Ho creato un sito Web ASP.NET MVC 2 che sto ospitando con Rackspace Cloud Server utilizzando IIS 7.0.Come configurare SQL Server/IIS 7.0 per consentire al sito Web ASP.NET MVC di accedere al database?
Quando si tenta di testare il sito Web in localhost con IIS 7.0 sul server, viene visualizzata una pagina di errore. Questo deriva dai log di SQL (sto usando Web SQL Edition):
Error: 18456, Severity: 14, State: 11
Login failed for user 'IIS APPPOOL\DefaultAppPool'. Reason: Token-based server access validation failed with an infrastructure error. Check for previous errors. [CLIENT: <local machine>]
Mio sito funziona bene sul mio PC di casa in modo che il problema è qualcosa a che fare con la connessione con il database.
Dopo aver ricercato il codice del messaggio di errore, suggerisce di disporre di un accesso DB valido ma l'accesso al server non è riuscito. Ho fatto una pila di lettura intorno a questo su vari forum e qui è quello che ho provato, nessuno dei quali hanno risolto il problema (incl StackOverflow/ServerFault.):
Impostare nuovo account di accesso utilizzando l'autenticazione di SQL Server. Ho creato un nuovo accesso in SQL e fornito i diritti di accesso corretti al mio DB. Ho usato la seguente stringa di connessione nella configurazione web:
Origine dati = myServer; Catalogo iniziale = myDB; ID utente = myUsername; Password = myPassword;
Crea nuovo accesso come
IIS APPPOOL\DefaultAppPool
. Ho creato un nuovo accesso in SQL con i diritti di accesso corretti e l'autenticazione Windows utilizzata. Stringa di connessione come segue:Server = myServer; Database = myDataBase; Trusted_Connection = True;
Utilizzare l'accesso di rete esistente
NT AUTHORITY\NETWORK SERVICE
. Ho mappato questo utente al mio database con i diritti di accesso corretti. Stringa di connessione come segue:Server = myServer; Database = myDataBase; Trusted_Connection = True;
Queste sembrano essere le opzioni principali mentre ho letto il materiale online. Infine, qui come alcune altre cose che possono essere utili:
- Impostazione SQL per Esegui come amministratore non ha risolto il problema
- Spegnimento
UAC
non ha aiutato - mio pool di applicazioni sta usando ApplicationPoolIdentity (migliore per motivi di sicurezza)
In breve, il mio sito Web non verrà avviato perché non è possibile ottenere un oggetto dal DB, pertanto genera un errore. Il problema è che i diritti di accesso al server non sono impostati correttamente. Non riesco a capire quale configurazione dei diritti di accesso/connessione/dominio di accesso SQL necessari.
Questo mi ha irritato per 3 settimane - puoi risparmiare 5 minuti per aiutarmi per favore?
Puoi pubblicare la stringa di connessione corrente? Presumo che ti stia connettendo con Integrated Security, pertanto AppPoolIdentity viene utilizzato per connettersi a SQL Server. Inoltre, ti preghiamo di indicare se i tuoi server web e sql sono in esecuzione in una configurazione di Active Directory. –
Utilizzo: 'Origine = SetsOfSix; Catalogo iniziale = SetsOfSix; Sicurezza integrata = SSPI; '. Consentitemi di andare a controllare la domanda sulla configurazione della directory attiva ... –
Su IIS 'Active Directory Domain Services' non è installato. Come dovrei controllare se i server web e sql sono in esecuzione nella configurazione Active Directy? –