Why Dual is Reliable

You may have noticed that bindings use two different classes for configuring reliability: ReliableSession and OptionalReliableSession. The only difference between the two is that OptionalReliableSession has an Enabled property that allows the reliable session to be turned off. If you only have a ReliableSession to work with, then there is no way for it to…

1

Default ProtectionLevel for Standard Bindings

Previously I’ve described how messages are protected by using the ProtectionLevel attribute to specify the minimum level of protection. If you don’t specify a protection level explicitly, then you’ll get one by default that is computed based on the binding. This default protection level is the maximum protection level that the binding can achieve with…

1

Overriding Protection for IPSec

How do I use username credentials with IPSec? I’m told that I need to turn on security but my connection is already secure. WCF only permits username tokens to be transmitted over a binding that’s secure. If a username and password are transmitted without some way of obscuring their values, then that essentially allows anyone…

2

Partial Trust Binding Black List

Partial trust support in WCF is an Orcas feature that allows clients and services to be run in an environment with restricted permissions. WCF is part of a fully trusted installation, so by default partially trusted callers are not allowed to call into the assembly. However, there is a standard mechanism to change that, which…

1

Mapping Credentials to Authentication Schemes

You may have noticed that an HTTP binding is configured with an HttpClientCredentialType whereas an HTTP binding element is configured with an AuthenticationScheme. How are these two settings related? If you want to switch between a custom binding and a standard binding for HTTP, then you need to know how to do the translation. Here’s…

3

Deriving from Bindings

When packaging up a collection of settings, how do I know whether to use a CustomBinding, extend the Binding class, or extend one of the standard binding classes? In most cases this should be easily decidable by asking at most two questions. The first question is used to decide between creating a custom binding instance…

1

Supporting Multiple Security Mechanisms

How do I write a service that gives clients the option to choose between different security mechanisms for protecting a service call? For example, how can I allow clients to choose between certificates and passwords? I think that if the example choice had been between message security and transport security, then many people would have…

3

Interfaces for GetProperty, Part 2

I’ve done a bit of grouping for the remaining binding elements as there are fourteen non-transport binding elements that I’m covering in this list. I’ve pointed out the ones that respond to a type with GetProperty on the base class as opposed to repeating the same code in each subclass. Our standard message encoders respond…

1

Interfaces for GetProperty, Part 1

This is more of a reference than anything else. People have asked me what interfaces do something when used with GetProperty on a binding element. Of course, a custom implementation can do whatever it wishes in its GetProperty, so I can only tell you what the standard implementations have done. Also, GetProperty is chained from…

1

Optional Interfaces on Binding Elements

In the past I’ve talked a lot about the absolute minimum you need to do to write a working channel. However, what about the people that want all of the optional bells and whistles that can go along with channel development? There are several interfaces that you can implement on the binding element or in…

2