Manchmal ist der Wurm drin. Beim Zugriff auf das ECP bei einem Kundensystem, z.B. bei der Konfiguration von Gruppeneinstellungen oder mobiler Gerätepartnerschaften kam es für den Anwender zu einer Fehlermeldung. Ich hatte das merkwürdige Verhalten erst auf den wirklich langsamen Exchange Server, welcher sich derzeit noch auf einem Leih-IP-SAN befindet, geschoben (das ECP braucht ja immer mal ’ne Weile), doch weit daneben. Da mich so Fehler ja wie wild fuchsen, schaue ich (mal wieder um diese Uhrzeit) genauer nach. Betraf Exchange 2010, SP3, UR3, UR4.
Im EventViewer für die Anwendungen finde ich folgenden Fehler:
Im Detail erzählt er mir was von:
Aktueller Benutzer: ‚dom.tld/Users/username‘ Fehler bei der Anforderung von URL 'https://exchangeURL/ecp/RulesEditor/InboxRules.svc/GetList?msExchEcpCanary=Suelzrabarber': System.Reflection.TargetInvocationException: Ein Aufrufziel hat einen Ausnahmefehler verursacht. ---> System.TypeLoadException: Der Typ "System.ServiceModel.Activation.HttpHandler" in der Assembly "System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=Token“ konnte nicht geladen werden. bei System.Reflection.RuntimeAssembly.GetType(RuntimeAssembly assembly, String name, Boolean throwOnError, Boolean ignoreCase, ObjectHandleOnStack type) bei System.Reflection.RuntimeAssembly.GetType(String name, Boolean throwOnError, Boolean ignoreCase) bei System.Activator.CreateInstance(String assemblyString, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, Evidence securityInfo, StackCrawlMark& stackMark) bei System.Activator.CreateInstance(String assemblyName, String typeName) bei Microsoft.Exchange.Management.ControlPanel.WebServiceHandler..ctor() --- Ende der internen Ausnahmestapelüberwachung --- bei System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck) bei System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark) bei System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark) bei System.Activator.CreateInstance(Type type, Boolean nonPublic) bei System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, StackCrawlMark& stackMark) bei System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes) bei System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture) bei System.Web.HttpRuntime.CreateNonPublicInstance(Type type, Object[] args) bei System.Web.Configuration.HandlerFactoryCache..ctor(String type) bei System.Web.HttpApplication.GetFactory(String type) bei System.Web.HttpApplication.MaterializeHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() bei System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)System.TypeLoadException: Der Typ "System.ServiceModel.Activation.HttpHandler" in der Assembly "System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=Token“ konnte nicht geladen werden. bei System.Reflection.RuntimeAssembly.GetType(RuntimeAssembly assembly, String name, Boolean throwOnError, Boolean ignoreCase, ObjectHandleOnStack type) bei System.Reflection.RuntimeAssembly.GetType(String name, Boolean throwOnError, Boolean ignoreCase) bei System.Activator.CreateInstance(String assemblyString, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, Evidence securityInfo, StackCrawlMark& stackMark) bei System.Activator.CreateInstance(String assemblyName, String typeName) bei Microsoft.Exchange.Management.ControlPanel.WebServiceHandler..ctor()
Wenn er da schon so auf dem „System.ServiceModel.Activation.HttpHandler“ auf Service Model 4 rumklopft, geb‘ ich ihm doch mal etwas bekanntes (Model 2) zum Frühstück.
Lösung: -> Ich tausche die .Net Framework Version vom Appliationspool für ECP im IIS also von Version 4 auf 2. Und – siehe da – Es klappt wieder. So geht’s in Screenshots:
Was sich Microsoft dabei gedacht hat? Ich hab‘ keine Ahnung, welche Tapete da geraucht wurde. Na denne. Viel Spaß mit Eurem Exchange!