Олицетворение: действие контроллера ASP.Net MVC против веб-форм - PullRequest
5 голосов
/ 15 декабря 2009

Есть ли разница с олицетворением действий контроллера ASP.Net MVC и веб-формы 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 действие контроллера всегда выполняется как сетевая служба, а веб-форма работает как пользователь. Будем весьма благодарны за любые разъяснения, почему эти двое ведут себя по-разному и как имитировать действия контроллера.

Ответы [ 2 ]

5 голосов
/ 17 декабря 2009

попробуйте добавить

 <identity impersonate="true">

до

<system.web>

часть вашего файла web.config для приложения mvc

1 голос
/ 16 декабря 2009

Это может помочь:

Олицетворение в ASP.NET MVC

Я должен также упомянуть, что олицетворение может отрицательно повлиять на вашу способность масштабировать приложение:

http://www.hanselman.com/blog/AvoidUsingImpersonationInASPNET.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...