Errata

Programming WCF Services

Errata for Programming WCF Services

Submit your own errata for this product.

The errata list is a list of errors and their corrections that were found after the product was released. If the error was corrected in a later version or reprint the date of the correction will be displayed in the column titled "Date Corrected".

The following errata were submitted by our customers and approved as valid errors by the author or editor.

Color key: Serious technical mistake Minor technical mistake Language or formatting error Typo Question Note Update

Version Location Description Submitted By Date submitted Date corrected
Printed
Page 70-71
Working with Channesl

In Example 1-21 there is no default (parameter-less) constructor for the ChannelFactory<T> class. Also, the first paragraph underneath Example 1-21 states "You need to provide the constructor of ChannelFactory<T> with the endpoint..." However the code underneath that paragraph is as follows:

ChannelFactory<IMyContract> factrory = new ChannelFactory<IMyContract>() ;

No parameter is passed to the constructor. Am I missing something or is this an error?

Note from the Author or Editor:
Yes, it should be:

ChannelFactory<IMyContract> factory = new ChannelFactory<IMyContract>(...);

Andrew Charlton  Mar 20, 2017 
Printed
Page 164
last paragraph

Figure 1-10 should be Figure 1-15 I think

Sam Hamer  Jun 05, 2013 
Printed
Page 132
2nd paragraph

"every endpoint it represented" should say "every endpoint is represented"

Sam Hamer  Jun 05, 2013 
Printed
Page 104
First paragraph, first sentence

I believe "the outgoing message to the client" should read "the outgoing message to the service"

Sam Hamer  Jun 03, 2013 
73
the GetAddress method

Inconsistent name for a local variable. It looks like the "record" variable name got changed to "hostRecord" at some point, or vice versa, but not all occurrences were caught.

Also: the return type of the GetAddress method is EndpointAddress, but the type actually returned is Tuple<ServiceHost, EndpointAddress>. The last line of the method should probably be:

return hostRecord.Item2;

John Bennett  Feb 08, 2012 
Printed
Page 822
code block

Change

void InitializeCallStack2()

{

if(OperationContext.Current == null || Header == null)

{

Header = new SecurityCallStack();

}

else

{

Header = SecurityCallStackContext.Current;

}

}



To:



void InitializeCallStack()

{

if(OperationContext.Current != null)

{

Header = SecurityCallStackContext.Current;



if(Header == null)

{

Header = new SecurityCallStack();

}

}

else

{

Header = new SecurityCallStack();

}

}

Anonymous  Feb 10, 2011 
Printed
Page 455
Example 8-40


Change "m_Handles" to "m_PendingOperations" in three places:

In the code:

ManualResetEvent handle = new ManualResetEvent(false);
lock(m_Handles)

In the code:

handle.Set();
lock(m_Handles)

In the code:

public new void Close()
{
lock(m_Handles)

Anonymous  Nov 10, 2010  Nov 01, 2010
Printed
Page 454
Last sentence in paragraph above Example 8-40

Put the line "Example 8-40 shows the implementation of AsyncOneWay
ClientBase<T>." as its own paragraph below where it is currently.

Anonymous  Nov 10, 2010  Nov 01, 2010
Printed
Page 453
Bottom code block

IAsyncResult IMyContract.BeginMyMethod(string text,AsyncCallback
callback,object asyncState)

Code alignment needs to be corrected. Move callback, back up one line and indent object asyncState) so that it aligns with the end of the code above it.



Anonymous  Nov 10, 2010  Nov 01, 2010
Printed
Page 763
Example C-22

Example C-22, two places, change the first two instances on page 763 of "replayAddress" to "responseAddress"

Anonymous  Nov 10, 2010  Nov 01, 2010
Printed
Page 753
First code block and second to last paragraph

In two places, change "replayAddress" to "responseAddress"

Anonymous  Nov 10, 2010  Nov 01, 2010
Printed
Page 137
First paragraph

Change "helper property knowntype[]" to "helper constructor"

Anonymous  Nov 10, 2010  Nov 01, 2010