Co się dzieje, gdy edytuję plik web.config?

79

Muszę edytować plik web.config w aktywnym środowisku Sharepoint, ale nie jestem pewien, co się stanie, jeśli to zrobię (chcę wyprowadzić niestandardowe błędy).

Czy spowoduje to ponowne uruchomienie procesu roboczego usług IIS6?

Czy aktywni użytkownicy utracą z tego powodu stan sesji?

Czy mogę bezpiecznie edytować plik?

willem
źródło
Możesz zdefiniować sesje do umieszczenia na zdalnym komputerze, więc reset aplikacji nie spowoduje utraty sesji
Kamarey

Odpowiedzi:

78

Pula aplikacji zostanie ponownie uruchomiona, a stan sesji zostanie utracony. Wyobraź sobie, że każda aplikacja ASP.NET (zgodnie z definicją w IIS) to program na pulpicie. Zapisanie pliku web.config spowoduje coś podobnego do zamknięcia programu i jego ponownego otwarcia.

Dan Goldstein
źródło
10
Nie mam pewności co do usług IIS6, ale w usługach IIS7 i IIS8 jest to zachowanie domyślne , chociaż można je zmienić za pomocą puli aplikacji> Opcje zaawansowane> Recykling> Wyłącz recykling w przypadku zmian konfiguracji = true, co jest pomocne na przykład w środowiskach produkcyjnych, aby Administratorzy mogą wprowadzić zmianę, która nie musi wejść w życie do następnego ponownego wykorzystania. Uważam, że w przypadku Sharepointa istnieje sposób zaplanowania zmian tak, aby zostały zastosowane w określonym czasie.
nic niepotrzebnego
3
@nothingisnecessary Ale czy Application Pools > Advanced Options > Recycling > Disable recycling samo ustawienie powoduje ponowne uruchomienie puli aplikacji? Żółwie na samym dole?
D'Arcy Rittich
1
Cześć @DanGoldstein. Wspomniałeś „ coś podobnego ” o zamknięciu programu i ponownym otwarciu. A co ze stanem statycznym? Czy istnieje pewność, że stan statyczny zostanie usunięty przez edycję web.config? Powodem jest to, że buforuję niektóre rzeczy z pliku web.config w zmiennych statycznych.
Dirk Boer
Szczerze mówiąc, nie jestem już dobrym źródłem informacji na ten temat. Kiedy odebrałem, korzystałem w pełnym wymiarze godzin z usług IIS i ASP.Net. Obecnie jestem tylko hobbystą programistą.
Dan Goldstein
@DirkBoer Cały powód, dla którego tu jestem, to znalezienie ostatecznej odpowiedzi na Twoje pytanie. Z mojego doświadczenia wynika, że ​​edycja pliku web.config nie wpływa na właściwości statyczne.
Alex Dresko,
9

Ponadto jeśli stan sesji jest skonfigurowany jako poza procesem (baza danych lub usługa), ponowne odtworzenie puli aplikacji nie spowoduje utraty żadnego stanu sesji. Dotyczy to zarówno Sharepointa, jak i zwykłego ASP.Net.

mola 7
źródło
2

Kiedy edytujesz web.config, zrestartuje AppDomain (NIE AppPool) tej aplikacji internetowej i wyczyści wszystkie zajęte zasoby i pamięć. Zatem nie będzie to miało wpływu na inne aplikacje internetowe działające w ramach tej puli aplikacji. Ponadto wyczyści sesje (w proc) i pamięć podręczną.

Jay Shah
źródło
1

Jak już wspominali niektórzy: pula aplikacji witryny w usługach IIS zostanie ponownie uruchomiona (zwykle zajmuje to kilka sekund). W rezultacie następne żądania stron będą wolniejsze (ponieważ nic nie będzie już buforowane). Utracony zostanie również stan sesji użytkowników; ALE w stanie sesji WSS nie jest używane domyślnie, w MOSS jest używane przez usługi InfoPath Form Services. Może się więc zdarzyć, że nie masz dużych problemów związanych z utratą stanu sesji.

Z drugiej strony; aby przezwyciężyć te problemy: zazwyczaj tworzy się rozwiązanie SharePoint (WSP), które wdraża i uruchamia zadanie czasomierza w celu wprowadzenia zmian w pliku web.config z kodu (przy użyciu klasy SPWebConfigModification modelu obiektów). Fajną rzeczą jest to, że możesz zaplanować wykonanie zmiany, aby Twoi użytkownicy tego nie zauważyli.

Jan Tielens
źródło