Nicholas Allen's Indigo Blog

Windows Communication Foundation From the Inside

Browse by Tags

Tagged Content List
  • Blog Post: Comparing Two Bindings

    Too often I have to compare two bindings to find the subtle difference between a configuration that works and a configuration that doesn't. This is quite a painful task as a channel stack can be generated on the fly based on different settings, there are dozens of configuration options (for security...
  • Blog Post: Transfer Modes and Buffer Sizes

    Why do only some of the bindings allow setting a MaxBufferSize? The maximum buffer size and the maximum received message size are in many ways linked together. If the message is being transferred in a single buffer, then it only makes sense for the largest size of that buffer to equal the largest...
  • Blog Post: Missing Binding Extensions

    Why do I get an error “configuration evaluation context not found” when I try to create a custom binding using bindings or binding elements from a library? The evaluation context not found error (or in traces with the identifier System.ServiceModel.EvaluationContextNotFound) is generally caused by...
  • Blog Post: Top Down Binding Element Order

    Why does a message encoder have to be specified before the transport when constructing a binding? A message encoder doesn’t directly fit into a channel stack because the message encoder type doesn’t implement any of the channel shapes. Instead, a message encoder is an auxilliary piece used by one...
  • Blog Post: Load Balanced Web Service Bindings

    What options can I use with WSHttpBinding to make it friendlier to load balancing? The primary difficulty encountered when using WSHttp with a load balancer is that WSHttp is easy to configure to produce application-level sessions between the client and service. Many load balancers support the...
  • Blog Post: Binary Http Binding

    Do I need IIS7 to use binary with HTTP for WCF? No, all you need is a custom binding because we don’t include a standard binding with that configuration out of the box. Here’s a quick example of putting binary and HTTP together with either code or configuration: BinaryMessageEncodingBindingElement...
  • Blog Post: Default Message Encodings

    What message encoding do I get if I don't include one in the binding? A message encoding binding element is required for any binding that uses an encoding-aware transport. However, it turns out that most transport binding elements include a default message encoding if you don't specify one explicitly...
  • Blog Post: Non-Destructive Queue Receive

    You should take the time to understand the earlier articles in the series for context if you haven't already. Future of Queuing An Alternative Queuing Model The three basic operations that we talked about for queuing with non-destructive receives are peek, lock, and delete. Rather than...
  • Blog Post: Building with Encoders

    The basis of a channel stack is that there is a series of objects that share a common interface for communication. This leaves message encoders with something of a problem as the primitive operations for encoding and decoding messages are different than the primitive operations for sending and receiving...
  • Blog Post: Context Channel Shapes

    What channels can be used in a context binding? The primary limitation for building a context binding is that the channel stack has to have the right shape. The context exchange protocol used by a context binding requires that the first invoked operation be a request-reply operation. This is so...
  • Blog Post: 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...
  • Blog Post: 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...
  • Blog Post: 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...
  • Blog Post: 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...
  • Blog Post: 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...
  • Blog Post: 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...
  • Blog Post: 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...
  • Blog Post: 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...
  • Blog Post: 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...
  • Blog Post: 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...
  • Blog Post: Preventing Anonymous Access

    How do I prevent clients from accessing my service anonymously? I've changed the settings in IIS from Anonymous Access to Integrated Windows Authentication. However, now I'm getting the error message: "Security settings for this service require 'Anonymous' Authentication but it is not enabled for the...
  • Blog Post: Responding to GetProperty

    I've created a custom implementation of GetProperty for my binding but now I'm getting errors when I go to use the channels. Why is the validation for these channels failing? This is an implementation problem that I've talked about in the past. There is a requirement that the values queried from...
  • Blog Post: Channel Bindings

    We're back to the channel development tour for another pair of articles. Today's article is the first of four in this segment on channel construction. The first half of the segment is background and the second half of the segment talks about code. In each half, there is an article on bindings and an...
  • Blog Post: Bindings for Workgroups

    What's the fastest binding for securely communicating over an intranet? How about if the client and server don't share a domain? A lot of attention gets paid to Internet configurations, where HTTP rules the world. HTTP is so dominant in that environment because it is a very open and standardized...
  • Blog Post: Customizing a Metadata Resolver

    I'm trying to use a metadata resolver but the metadata endpoint requires a custom binding. How do I override the binding used by MetadataResolver? The overloads on MetadataResolver are pretty strange, but you can pick any of the ones that take an instance of MetadataExchangeClient. public...
Page 1 of 3 (54 items) 123