To z założenia. Sekcja system.webServer zasadniczo definiuje sam IIS. Jeśli tak, nie pozostaniesz z niczym. W applicationHost.config powinieneś mieć coś takiego:
<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" />
...
Zwróć uwagę na właściwości lockItem. Ponieważ istnieje 1 lub więcej elementów zamka, spowoduje naruszenie zasad zamka.
Więc albo musisz specjalnie usunąć tylko te elementy, których nie chcesz z web.config, lub jeśli naprawdę musisz je wyczyścić i dodać z powrotem własne, to w applicationHost.config usuń lockItem = "true" na każdego z tych elementów i upewnij się, że dodałeś wystarczającą ich liczbę, aby serwer WWW faktycznie działał.
Edytować
(Dołączone dodatkowe informacje od Daniela, na jego wniosek. (Scott))
Oto, co zrobiłem na podstawie tego, co powiedział Scott:
Otwarty applicationHost.config w% windir% \ system32 \ inetsrv \ config. Zauważ, że w 64-bitowym systemie Windows Server 2008 musisz edytować plik za pomocą 64-bitowego edytora (natywny Notatnik to zrobi, ale Notepad ++ nie będzie w stanie znaleźć pliku). Zobacz tutaj, aby uzyskać więcej informacji na ten temat.
W elemencie zmień atrybut lockItem we wszystkich modułach na false.
W pliku web.config mojej aplikacji internetowej byłem w stanie wykonać następujące czynności:
<system.webServer>
<modules>
<clear />
</modules>
</system.webServer>
Oczywiście, jak zauważa Scott, oznacza to, że nie ma już serwera WWW, więc oto minimalny zestaw modułów, których potrzebowałem, aby ponownie uruchomić moje rzeczy (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" />
Ponadto, dla wszystkich zainteresowanych, oto historia, dlaczego to robię.
Mam nadzieję, że nie jest za późno na pomoc.
Mam ten problem dzisiaj i naprawiłem problem z edycją następującego węzła XML ApplicationHost.Config:
httpErrors lockAttributes = "allowAbsolutePathsWhenDelegated, defaultPath"
Usuń to „, defaultPath” i uruchom ponownie IIS (iisreset).
Mam nadzieję, że to pomocne.
źródło
Spróbuj usunąć oryginalny plik web.config (utwórz kopię zapasową), a po wprowadzeniu zmian za pomocą usług IIS (utworzy nowy plik web.config) przywróć oryginalne zmiany. W przypadku konfiguracji BŁĘDÓW HTTP postępuj zgodnie z tym http://paymentgatewayintegrationhelp.com/Tech-Help/HTTP-Errors-and-webconfig-Lock-Violation-1140.asp
źródło