2009-12-15 13 views
5

Esiste una differenza con la rappresentazione tra un'azione del controller MVC ASP.Net e un modulo Web ASP.Net? Utilizzando lo stesso identico codice all'interno dello stesso progetto Web, sono in grado di impersonare correttamente l'utente Windows quando si connette a SQL Server da un Web Form ma non dall'azione Controller. Ecco il codice di esempio sto testando da ogni:Impersonificazione: ASP.Net MVC Controller Azione e moduli Web

string sqlQuery = @"SELECT Top 10 FullName FROM Customer"; 

// Connect to the database server. You must use Windows Authentication; 
SqlConnection connection = new SqlConnection("Data Source=ServerName;Initial Catalog=DBName;Integrated Security=SSPI"); 
// Create a DataTable to store the results of the query. 
DataTable table = new DataTable(); 

// Create and configure the SQL Data Adapter that will fill the DataTable. 
SqlDataAdapter adapter = new SqlDataAdapter(); 
adapter.SelectCommand = new SqlCommand(sqlQuery, connection); 

// Execute the query by filling the DataTable. 
adapter.Fill(table); 

Ho controllato l'utente HttpContext sia il controller e il modulo web e sembrano identici. Tuttavia, quando si esegue una traccia SQL, l'azione del controller viene sempre eseguita come servizio di rete, mentre il modulo Web viene eseguito come utente. Sarebbe apprezzato qualsiasi chiarimento sul perché questi due si comportano in modo diverso e su come impersonare all'interno dell'azione del controller.

risposta

5

tenta di aggiungere

<identity impersonate="true"> 

a

<system.web> 

parte del file web.config per un'applicazione MVC

+0

grazie, questo ha funzionato per me! –