Saturday, November 14, 2009 11:40 PM
lukaashek
WCF .NET 4 Beta 1 – Default Binding Configurations
Při vývoji WCF služby ve verzi .NET 3.x jsme do konfiguračního souboru vložili definice jednotlivých endpointů a pokud jsme chtěli pozměnit některé vlastnosti bindingu, musel jsme nastavit atribut bindingConfiguration na název naší konfigurace. Na následující ukázce, chci využívat kódování MTOM u basicHttpBindingu:
1: <configuration>
2: <system.serviceModel>
3: <bindings>
4: <basicHttpBinding>
5: <binding name="BasicWithMtom" messageEncoding="Mtom">
6: </binding>
7: </basicHttpBinding>
8: </bindings>
9: <services>
10: <service name="GreetingService">
11: <endpoint address="mtom" binding="basicHttpBinding"
12: bindingConfiguration="BasicWithMtom"
13: contract="IHello"/>
14: </service>
15: </services>
16: </system.serviceModel>
17: </configuration>
Mnozí z nás ovšem správně upravili element basicHttpBinding, kde uvedli název, messageEnconding atd. ale zapomněli pak v definici služby uvést potřebný atribut bindingConfiguration. Ve verzi .NET 4.x se těchto chybiček snadno vyvarujeme, protože stačí pouze správně nastavit binding a v definici endpointu už nemusíme uvádět název toho nastavení u atributu bindingConfiguration. Nutnou podmínkou aby vše fungovalo správně je, že nesmíme pojmenovat takto upravený binding. Tedy z definice, kterou vidíte o pár řádků výše musíme odebrat tuto část kódu: name=”BasicWithMtom” !!!. Výsledný konfigurační soubor vypadá následovně:
1: <configuration>
2: <system.serviceModel>
3: <bindings>
4: <basicHttpBinding>
5: <binding messageEncoding="Mtom"> <!-- BEZ ATRIBUTU NAME !!!-->
6: </binding>
7: </basicHttpBinding>
8: </bindings>
9: </system.serviceModel>
10: </configuration>
Toto nastavení lze provést globálně pro všechny služby v souboru machine.config, nebo pouze pro konkrétní služby v jejich konfiguračních souborech.