Раздел конфигурации 'system.web.extensions' не может быть прочитан, потому что в нем отсутствует объявление раздела (происходит с определенной веткой кода)
Я заметил, что у одного из веб-приложений, с которыми я работаю ежедневно, были проблемы, запущенные ранее сегодня. Код компилируется нормально, и когда приложение запускается, я получаю HTTP-ответ 500.19 - Внутренняя ошибка сервера.
Detailed Error Information:
Module IIS Web Core
Notification Unknown
Handler Not yet determined
Error Code 0x80070032
Config Error The configuration section 'system.web.extensions' cannot be read because it is missing a section declaration
Config File \\?\C:\TFS\Source Control\ManagementSystem\Prod\MS\App\web.config
Requested URL http://localhost:40095/Ship/AddEditOrder.aspx
Physical Path
Logon Method Not yet determined
Logon User Not yet determined
Request Tracing Directory C:\Users\{User}\Documents\IISExpress\TraceLogFiles\
Внизу под этим я вижу следующее:
Дополнительная информация:
Эта ошибка возникает, когда возникает проблема с чтением файла конфигурации для веб-сервера или веб-приложения. В некоторых случаях журналы событий могут содержать больше информации о том, что вызвало эту ошибку.
Если вы видите текст "Определен раздел" system.web.extensions/scripting/scriptResourceHandler ", дубликат", эта ошибка связана с тем, что вы запускаете приложение на основе.NET Framework 3.5 в.NET Framework 4. Если вы работаете WebMatrix, чтобы решить эту проблему, перейдите на узел Настройки, чтобы установить версию.NET Framework на ".NET 2". Вы также можете удалить дополнительные разделы из файла web.config.
Это похоже на проблему с IIS, и я проверил предлагаемые решения для этой проблемы следующим образом:
- Раздел конфигурации 'system.web.extensions' не может быть прочитан, поскольку в нем отсутствует объявление раздела
- https://www.codeproject.com/Questions/723045/How-can-I-solve-this-problem-The-configuration-sec
- https://gyorgybalassy.wordpress.com/2013/12/02/cleaning-up-iis-express-configuration/
Последняя статья выглядела наиболее многообещающей, но я не смог найти никаких следов приложения, которое пытался запустить.
1 ответ
Я наконец решил это!
Это сообщение немного вводит в заблуждение, но после соединения точек с некоторыми из этих статей я пришел к следующему решению. Похоже, что мое локальное решение сохранило свои собственные настройки IIS для этого конкретного "сайта" до нашего обновления.Net Framework с 3.5 до 4.0. Другими словами, запись IIS имеет устаревшее объявление структуры пула приложений.
Во многих из этих статей упоминается необходимость изменения настроек IIS Express, которые обычно указывают на каталог пользовательских папок, такой как
C:\Users\User\Documents\IISExpress\ Config\applicationHost.config
Однако, как я упоминал в моем первоначальном посте, здесь не было никаких остатков ни одного из моих проектов.
Я продолжал копать и обнаружил, что само решение также сохраняет локальную копию этих настроек! Вы сможете найти их рядом с вашим локальным Project Solution в папке ".vs"!
Пример:
C: \ TFS \ Source Control \ WMS \ Prod \ WMS.vs \ config\applicationhost.config
Оттуда я отследил свой сайт, у которого были проблемы
<site name="WHSMGMTApp" id="3">
<application path="/" applicationPool="Clr2IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\TFS\Source Control\WMS\Prod\WMS\WHSMGMTApp" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:40095:localhost" />
</bindings>
</site>
Я перешел на узел пула приложений для своего сайта и обнаружил, что он все еще был на.Net версии 2.0, но должен был быть 4.0.
Найдите узел "Пулы приложений" и найдите свой пул приложений.
В моем случае это был Clr2IntegratedAppPool
<applicationPools>
<add name="Clr2IntegratedAppPool" managedRuntimeVersion="v2.0" managedPipelineMode="Integrated" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" />
</applicationPools>
Я изменил managedRuntimeVersion с "v2.0" на "v4.0", и бум, это сработало!
Похоже, что это очень нишевый сценарий, когда вы обновили.Net Framework в рамках решения, и у вас уже есть запись Local IIS Express для определенной ветви кода. (Это объясняет, почему моя ветвь QA работала, а не моя ветвь Prod, потому что у них есть отдельные записи в файле.config)
Любое понимание того, зачем Visual Studio нужна собственная версия этого.config, приветствуется!