Isso é por design. A seção system.webServer define essencialmente o próprio IIS. Se você, você não ficará com nada. No applicationHost.config, você deve ter algo parecido com isto:
<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" />
...
Observe as propriedades lockItem. Como existem 1 ou mais itens de bloqueio, lançará uma violação de bloqueio.
Portanto, você precisa remover especificamente apenas os itens que não deseja do web.config ou, se realmente precisar limpá-los todos e adicionar seus próprios, em applicationHost.config remova o lockItem = "true" de cada um desses elementos e adicione-os de volta o suficiente para que o servidor da Web funcione.
Editar
(Mais informações em anexo de Daniel, por solicitação dele. (Scott))
Aqui está o que eu fiz com base no que Scott disse:
ApplicationHost.config aberto em% windir% \ system32 \ inetsrv \ config. Observe que no Windows Server 2008 de 64 bits, você precisará editar o arquivo com um editor de 64 bits (o Bloco de Notas nativo o fará, mas o Notepad ++ não poderá encontrar o arquivo). Veja aqui para mais informações sobre isso.
No elemento, altere o atributo lockItem em todos os módulos para false.
No arquivo web.config do meu aplicativo Web, foi possível fazer o seguinte:
<system.webServer>
<modules>
<clear />
</modules>
</system.webServer>
Obviamente, como Scott ressalta, isso significa que não há servidor da Web, então aqui está o conjunto mínimo de módulos que eu precisava para colocar minhas coisas em execução novamente (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" />
Além disso, para qualquer pessoa interessada, aqui está a história de fundo por que estou fazendo isso.