Це за дизайном. Розділ system.webServer по суті визначає сам IIS. Якщо ви, то вам нічого не залишиться. У applicationHost.config у вас повинно бути щось подібне:
<modules>
<add name="HttpCacheModule" lockItem="true" />
<add name="DynamicCompressionModule" lockItem="true" />
<add name="StaticCompressionModule" lockItem="true" />
<add name="DefaultDocumentModule" lockItem="true" />
<add name="DirectoryListingModule" lockItem="true" />
<add name="IsapiFilterModule" lockItem="true" />
<add name="ProtocolSupportModule" lockItem="true" />
<add name="HttpRedirectionModule" lockItem="true" />
<add name="StaticFileModule" lockItem="true" />
...
Зауважте властивості lockItem. Оскільки є 1 або більше елементів блокування, це призведе до порушення блокування.
Отже, вам або потрібно спеціально вилучити з web.config лише ті елементи, які вам не потрібні, або якщо вам дійсно потрібно очистити їх усі і додати свої власні, тоді в applicationHost.config видаліть lockItem = "true" на кожен із цих елементів, і переконайтеся, що ви додали їх достатньо, щоб ваш веб-сервер фактично працював.
Редагувати
(Додав додаткову інформацію від Даніеля, на його прохання. (Скотт))
Ось що я зробив на основі сказаного Скоттом:
Відкрито applicationHost.config у% windir% \ system32 \ inetsrv \ config. Зауважте, що в 64-розрядному Windows Server 2008 вам потрібно буде відредагувати файл за допомогою 64-розрядного редактора (вродний Блокнот зробить це, але Notepad ++ не зможе знайти файл). Дивіться тут для отримання додаткової інформації про це.
В елементі змініть атрибут lockItem на всіх модулях на хибний.
У файлі web.config мого веб-додатку тоді можна було зробити наступне:
<system.webServer>
<modules>
<clear />
</modules>
</system.webServer>
Звичайно, як зазначає Скотт, це означає, що веб-сервера не залишилося, тому ось мінімальний набір модулів, який мені потрібен, щоб знову запустити свої речі (YMMV):
<add name="HttpRedirectionModule" lockItem="false" />
<add name="StaticFileModule" lockItem="false" />
<add name="CustomLoggingModule" lockItem="false" />
<add name="CustomErrorModule" lockItem="false" />
<add name="IsapiModule" lockItem="false" />
<add name="AnonymousAuthenticationModule" lockItem="false" />
Також для всіх, хто цікавиться, ось історія , чому я це роблю.