2012-01-25 3 views
1

Я опубликовал сайт ASP.NET MVC3. Он отлично работает. Однако, оглядываясь назад на мой файл web.config, я не был уверен, что некоторые из значений, которые я использовал, верны для публикации и для разработки. Эти конфигурации находятся в разделе <system.web>.ASP.NET MVC3 Опубликовать настройки в web.config

... 
    <system.web> 
    <httpRuntime requestValidationMode="2.0" executionTimeout="200" maxRequestLength="20000000"/> 
    <compilation debug="true" targetFramework="4.0"> 
... 

Я читал здесь (http://msdn.microsoft.com/en-us/library/e1f13641.aspx), что с помощью отладки = True в компиляции будет игнорировать ExecutionTimeout 200, и использовать значение по умолчанию 110. Это, как представляется, дело, а сайт настроен, чтобы позволить очень большое количество файлов, которые будут загружены все сразу. Однако, всего за 110 секунд, не так много может быть загружено.

Мой вопрос заключается в следующем: Правильная настройка для публикации живого сайта для отладки «false»? Кроме того, requestValidationMode = "2.0" все еще безопасно использовать, учитывая, что asp.net теперь находится на версии 4 (скоро будет 4.5)?

+2

Когда отладка верна, нет таймаута выполнения. Вы должны всегда устанавливать debug в false при публикации и явно устанавливать executeTimeout, если вам нужно больше, чем значение по умолчанию. – dotjoe

+0

Да, я понял, что загрузка действительно происходит, но где-то еще есть узкое место. Я пытаюсь загрузить сразу 9 МБ изображений, но они не будут загружаться после их загрузки. Если я делаю их отдельно, это работает, но не все сразу. –

+0

Вы на IIS 7+? Если это так, убедитесь, что фильтрация запроса maxAllowedContentLength не настроена на низкий. Я думаю, что дефолт для этого довольно большой .... – dotjoe

ответ

3

Validationmode 2.0 не является каркасной версией и может оставаться такой.

Положите debug = false, и вы в порядке.

2

requestValidationMode ... Насколько мне известно, это имеет быть установлен на 2,0, если вы хотите, чтобы специальные символы (<,>,% и т.д.) в данном запросе, чтобы передать запрос ASP.NET в валидация вообще. requestValidationMode = "2.0" означает "только принудительное подтверждение на страницах (то есть .aspx), а не на каждый запрос (как было представлено в 4.0). Это позволяет ASP.NET MVC принять на себя проверку - и, следовательно, также позволяет вам выключите его для особых запросов.

Это безопасно? Если вы уверены, что любые действия или контроллеры, у которых есть [ValidateInput(false)], или модели с [AllowHtml] были должным образом защищены от атак. Imran Baloch имеет полное объяснение here.

И да, отладка должна быть «ложной» по нескольким причинам, включая производительность и использование памяти. Кроме того, debug = «true» изменяет политику кэширования по умолчанию для статических файлов, ache файлы в браузере, то есть тонны избыточных запросов на скрипты, CSS и т. д.

Что касается загрузки изображения, за исключением предложенных предложений, проверьте в программе просмотра событий, что на самом деле это не утилизация пула приложений по одной причине или другой, а не таймаут выполнения.

Смежные вопросы