<behaviorExtensions>
Rozszerzenia zachowania umożliwiają użytkownikowi tworzenie elementów zachowania zdefiniowanych przez użytkownika. Tych elementów można używać wraz ze standardowymi elementami zachowania programu Windows Communication Foundation (WCF). Sekcja behaviorExtensions
definiuje element tak, aby można go było użyć w konfiguracji. Oto przykład typowego rozszerzenia zachowania.
<system.serviceModel>
<extensions>
<behaviorExtensions>
<add name="myBehavior"
type="Microsoft.ServiceModel.Samples.MyBehaviorSection, MyBehavior,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
</behaviorExtensions>
</extensions>
</system.serviceModel>
Aby dodać możliwości konfiguracji do elementu, należy napisać i zarejestrować element konfiguracji. Aby uzyskać więcej informacji na ten temat, zobacz dokumentację System.Configuration .
Po zdefiniowaniu elementu i jego typu konfiguracji można użyć rozszerzenia, jak pokazano w poniższym przykładzie.
<behaviors>
<behavior configurationName="testChannelBehavior">
<myBehavior />
<channelSecurity cacheCookies="false"
detectReplays="false"
maxCachedNonces="9"
maxClockSkew="00:00:03"
maxCookieCachingTime="00:07:24"
replayWindow="00:07:22.2190000" />
</behavior>
</behaviors>
Zabezpieczenia
Zdecydowanie zaleca się używanie w pełni kwalifikowanych nazw zestawów podczas rejestrowania typów w plikach machine.config
i app.config
. Jeśli typ nie jest jednoznacznie zdefiniowany, moduł ładujący CLR wyszukuje go w następujących lokalizacjach w określonej kolejności:
Jeśli zestaw typu jest znany, moduł ładujący przeszukuje lokalizacje przekierowania pliku konfiguracji, GAC, bieżący zestaw przy użyciu informacji o konfiguracji i katalogu podstawowego aplikacji. Jeśli zestaw jest nieznany, moduł ładujący przeszukuje bieżący zestaw, mscorlib i lokalizację zwróconą przez program obsługi zdarzeń TypeResolve
. Tę kolejność wyszukiwania CLR można modyfikować za pomocą punktów zaczepienia, takich jak mechanizm przekazywania typów i zdarzenie AppDomain.TypeResolve.
Osoba atakująca może wykorzystać kolejność wyszukiwania CLR i wykonać nieautoryzowany kod. Użycie w pełni kwalifikowanych (silnych) nazw jednoznacznie identyfikuje typ i dodatkowo zwiększa bezpieczeństwo systemu.
Aby uzyskać więcej informacji, zobacz Jak środowisko uruchomieniowe lokalizuje zestawy i TypeResolve.