|
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
Использованы материалы интернет форумов и сайтов:
|
|