«Предотвращение выполнения данных» убивает (VS2008) локальный сервер разработки ASP.Net (он же Cassini) в Vista 64.
Вопрос
Иногда я обнаруживаю, что при отладке приложения ASP.Net (написанного в Visual Studio 2008 и работающего в 64-разрядной версии Vista) локальный сервер разработки ASP.Net (т.«Кассини») перестает отвечать.
Часто появляется сообщение о том, что «Предотвращение выполнения данных (DEP)» убило WebDev.WebServer.exe.
Журналы событий просто сообщают мне, что «WebDev.WebServer.exe перестал работать».
Я слышал, что эта «проблема» чаще возникает в 64-разрядной версии Vista, поскольку DEP включен по умолчанию.Следовательно, отключение DEP может «решить» проблему.
Но мне интересно:
Существует ли известная ошибка/ситуация с Cassini, из-за которой DEP завершает процесс?
Альтернативно, в чем практическая опасность отключения Data Execution Prevention?
Решение
Единственный способ узнать это наверняка — покопаться в исходном коде Cassini и посмотреть, есть ли какие-либо области, где он генерирует код в куче, а затем выполняет его без очистки флага NX.
Однако вместо этого почему бы не использовать IIS?
РЕДАКТИРОВАТЬ:
Опасность отключения DEP заключается в том, что вы открываете дыры в безопасности.DEP работает, не позволяя выполнять произвольный сгенерированный код в куче.Это помогает предотвратить вставку кода вредоносных программ в сегменты данных законных программ.
Другие советы
Вы находитесь на Vista, ситуация улучшилась (7), Кассини остался дрянным.
Так что просто запустите это приложение на iis с заголовком хоста и записью файла хостов.
При необходимости вы можете исключить определенные программы из DEP.
Как Джонатан
упоминает, что это открывает любые уязвимости, которые могут иметь приложение.
Использование IIS в Visual Studio больше не является той головной болью, которая была в дни 1.1/VS02/03.Есть много веских причин предпочесть IIS серверу Cassini (статьи Доминик Байер):
Кассини считают вредным
Еще одна причина, почему я бы не рекомендовал Кассини
Доминик — «человек», когда дело касается IIS и безопасности.
При использовании IIS для веб-приложения я всегда сначала создаю приложение в IIS, указываю ему предпочитаемую папку, а затем использую VS для создания проекта.Это означает, что вам не придется загромождать c:\inetpub\wwwroot своими веб-приложениями.
Конечно, теперь у нас есть IISExpress, который, если вы ориентируетесь на IIS7.x, является очевидным выбором для разработки приложений ASP.NET в Visual Studio.
Спасибо за ответы.Думаю, в эпоху .net 1.x у меня развилось такое отвращение к IIS, что я отказывался рассматривать возможность его повторного использования — до сих пор.
в стороне:выбирая между двумя одинаково приемлемыми ответами от ЧанЧана и Джонатана, я произвольно отметил ответ Джонатана как «принятый», потому что а) он вошел первым и б) его репутация в настоящее время ниже.