2009-12-15 3 views
5

Existe-t-il une différence d'usurpation d'identité entre les actions d'un automate ASP.Net MVC et un formulaire Web ASP.Net? En utilisant exactement le même code dans le même projet Web, je suis capable d'emprunter l'identité de Windows lors de la connexion à SQL Server à partir d'un formulaire Web, mais pas de l'action du contrôleur. Voici l'exemple de code que je teste de chacun:Usurpation d'identité: action du contrôleur ASP.Net MVC par rapport aux formulaires 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); 

J'ai vérifié l'utilisateur HttpContext sur le contrôleur et le formulaire Web et ils semblent identiques. Toutefois, lors de l'exécution d'une trace SQL, l'action du contrôleur s'exécute toujours en tant que service réseau, tandis que le formulaire Web s'exécute en tant qu'utilisateur. Toute clarification sur les raisons pour lesquelles ces deux comportements sont différents et sur la façon d'usurper l'identité du contrôleur serait appréciée.

Répondre

5

essayer d'ajouter

<identity impersonate="true"> 

à

<system.web> 

partie de votre fichier web.config pour l'application mvc

+0

merci, cela a fonctionné pour moi! –

Questions connexes