|
Server Error in Application. A potentially dangerous Request. | ☑ | ||
---|---|---|---|---|
0
Evrepid
14.05.13
✎
16:00
|
Server Error in Application. A potentially dangerous Request./ Серверная ошибка в приложении. Потенциально опасный запрос.
Может кому пригодится в работе. При работе в управляемом приложении через веб сервис пользователь иногда получает сообщение: Server Error in '/' Application С совершенно не вразумительным текстом описания ошибки и рекомендацией как поступить при этом. Как решать указанную проблему? Разделим саму проблему на две части: Проблема Веб сервиса и проблема 1С. Проблему 1С можно обнаружить и устранить, если запустить режим отладки Тонкого клиента и проверить работу управляемых форм, ответственных за место в котором происходит ошибка. Здесь мы будем рассматривать половину относящуюся к Веб серверу. В некоторых источниках пишут что указанная ошибка является характерной для хакерских атак, но в нашем конкретном случае о такой атаке речь идти не может, т.к. проблема возникает при обращении к сервису не из вне сети, а из интранет. В переводе на русский язык ошибка звучит как: "Ошибка приложения вызванная на сервере. Текущие настройки сервера для этого приложения ошибочны, приложение было остановлено по соображениям безопасности в привентивном режиме." Рекомендация данная ниже отключает режим вывода сообщений, но не дает ответа как устранить причину появления ошибки, при условии правильности работы кода 1С во всех других режимах. немного манипуляций и страница дает уже более понятную информацию: Если ранее проблема была не понятна, то сейчас более понятно что ошибка относится именно к веб серверу и что вызывается именно привентивным прекращением работы приложения веб сервером. Проблема же заключается в том, что .net имеет режим валидации исполняемого сервером кода, вот эта валидация и приводит к появлению указанной ошибки. Для устранения ошибки рекомендуется выполнить настройки вебсервера: 1. ValidateRequest = "False" например,если в конфигурационном файле у вас уже есть: <% @ Page Language = "VB" AutoEventWireup = "False" Codebehind = "MyForm.aspx.vb" наследует = "Proj.MyForm"%> то должно стать: <% @ Page Language = "VB" AutoEventWireup = "False" Codebehind = "MyForm.aspx.vb" наследует = "Proj.MyForm" ValidateRequest = "False"%> В более поздних версиях Visual Studio значение этого свойства можно получить на странице свойств, поэтому просто установите " ValidateRequest " на " False". Любым способом установки можно получить тот же результат. Примечание: 1.1. Если вы используете. NET 4, то вам необходимо добавить requestValidationMode = "2.0" в HttpRuntime раздел конфигурацииweb.config файла. Например: <httpRuntime requestValidationMode="2.0"/> Если у вас еще нет раздела HttpRuntime в web.config, то это можно сделать такие настройки в разделе <system.web>. Чтобы глобально выключить проверку запросов добавьте следующую строку в вашем web.config файла: <pages validateRequest="false" /> раздела <system.web>. 2. Установить EnableEventValidation = "False" запретим проверку корректности события. 3. Установить EnableViewState = "False" и 4. Установить нужное значение в ExecutionTimeout. В моем случае строка выглядит так: ExecutionTimeOut = "20" Это верно для: NET 1.1,. NET 2,. NET 3.5 и. NET 4.0 Использованы материалы интернет форумов и сайтов: http://www.cryer.co.uk/brian/mswinswdev/ms_vbnet_server_error_potentially_dangerous.htm http://social.msdn.microsoft.com/Forums/en-US/windowsazuresecurity/thread/3dbedb02-e6b6-4e44-8a94-39225f2b41c4 http://forums.asp.net/t/1775186.aspx/1 http://forums.asp.net/t/1825664.aspx/1 http://www.west-wind.com/weblog/posts/2010/Aug/19/RequestValidation-Changes-in-ASPNET-40 |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |