Существует ли различие с олицетворением между контроллером MVC ASP.NET действия по сравнению с Веб-формой ASP.NET? С помощью того же самого кода в рамках того же веб-проекта я могу успешно исполнить роль пользователя Windows при соединении с SQL Server из Веб-формы, но не от Действия Контроллера. Вот пример кода, который я тестирую от каждого:
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);
Я проверил пользователя HttpContext и на контроллере и на веб-форме, и они выглядят идентичными. Однако при выполнении трассировки SQL действие контроллера всегда работает как Сетевая служба, в то время как веб-форма работает как пользователь. Любое разъяснение по поводу того, почему эти два ведут себя отличающиеся и как явиться олицетворением в рамках действия контроллера, ценилось бы.
попробуйте добавить
<identity impersonate="true">
в
<system.web>
часть вашего файла web.config для приложения mvc
Это может помочь:
Я также должен упомянуть, что олицетворение может отрицательно повлиять на вашу способность масштабировать приложение:
http: //www.hanselman.com/blog/AvoidUsingImpersonationInASPNET.aspx