Errata

Learning WCF

Errata for Learning WCF

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.

The following errata were submitted by our customers and have not yet been approved or disproved by the author or editor. They solely represent the opinion of the customer.

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

Version Location Description Submitted by Date submitted
NA
Example 1-4

The author says "On the client side, the service contract can still be represented as an interface (the client only requires metadata) but the name of that interface (the service contract) must match the new service contract name, HelloIndigoService?instead of IHelloIndigoService."

But this has actually not been changed in the example 1-4:

// Client Project - ServiceProxy.cs
[ServiceContract(Name="HelloIndigoService",
Namespace = "http://www.thatindigogirl.com/samples/2006/06")]
public interface IHelloIndigoService
{
[OperationContract]
string HelloIndigo();
}


It Should be

// Client Project - ServiceProxy.cs
[ServiceContract(Name="HelloIndigoService",
Namespace = "http://www.thatindigogirl.com/samples/2006/06")]
public interface HelloIndigoService
{
[OperationContract]
string HelloIndigo();
}

Anonymous  Jun 17, 2010 
1.5.1.5
Figure 1-24

svcutil/d:c:\LearningWCF\Labs\Chapter1\HelloIndigo\Client
/o:serviceproxy.cs/config:app.config http://localhost:8000/
HelloIndigo

should be

svcutil/d:c:\LearningWCF\Labs\Chapter1\HelloIndigo\Client
/o:serviceproxy.cs /config:app.config http://localhost:8000/
HelloIndigo

and

svcutil/d:"c\Learning WCF\Labs\Chapter1\HelloIndigo\Client"
/o:serviceproxy.cs/config:app.config http://locahost:8000/HelloIndigo

should be

svcutil/d:"c\Learning WCF\Labs\Chapter1\HelloIndigo\Client"
/o:serviceproxy.cs /config:app.config http://locahost:8000/HelloIndigo

(Spaces added after "serviceproxy.cs" in both cases)

Richard DesLonde  Aug 20, 2009 
1.5.2
4th paragraph

Reads

"It also includes a smaple data contract (to be discussed in Chapter 2."

Should read

"It also includes a sample data contract (to be discussed in Chapter 2"

Richard DesLonde  Aug 20, 2009 
1.5.3
Second Code example

svcutil /d:<YourLearningWCFPath>\Labs\Chapter1\HelloIndigo\Client /o:serviceproxy.cs/config:noconfig http://localhost:8000/HelloIndigo

should be

svcutil /d:<YourLearningWCFPath>\Labs\Chapter1\HelloIndigo\Client /o:serviceproxy.cs /config:noconfig http://localhost:8000/HelloIndigo

(Added space after "serviceproxy.cs")

Richard DesLonde  Aug 20, 2009 
Printed Page 23
Example 1-1. Code to programatically initialize the ServiceHost

(May 2007: First Edition)

Step 5.Compile and run the host will not work yet, unless you comment out some lines as follows:

static void Main(string[] args)
{
//using (ServiceHost host = new ServiceHost(typeof(HelloIndigo.HelloIndigoService),
// new Uri("http://localhost:8000/HelloIndigo")))
//{
// host.AddServiceEndpoint(typeof(HelloIndigo.HelloIndigoService),
// new BasicHttpBinding(),
// "HelloIndigoService");
// host.Open();
Console.WriteLine("Press <ENTER> to terminate the service host");
Console.ReadLine();
//}
}

Besides:

host.AddServiceEndpoint(typeof(HelloIndigo.IHelloIndigoService),
new BasicHttpBinding(),
"HelloIndigoService");

Should be:

host.AddServiceEndpoint(typeof(HelloIndigo.HelloIndigoService),
new BasicHttpBinding(),
"HelloIndigoService");

Hermann R?sch  Sep 10, 2009 
Printed Page 24
Instructions don't work

The instructions say, "Compile the solution and run the Host project first, followed by the Client project". Attempting to execute Client, I receive this error:

Could not connect to http://localhost:8000/HelloIndigo/HelloIndigoService. TCP error code 10061: No connection could be made because the target machine actively refused it 127.0.0.1:8000.

Googling exactly this error yields this link:

http://stackoverflow.com/questions/2888139/endpointnotfoundexception-when-working-through-tutorials-in-learning-wcf


Bob Jones  Oct 28, 2010 
Printed Page 32
#5 code example (5/09 printing)

The step 5 code example shows:

using System.ServiceModel;

static void Main(string[] args)
{
using (ServiceHost host = new ServiceHost(typeof(HelloIndigoService)))
{
host.Open();
Console.WriteLine("Press <ENTER> to terminate the host application");
Console.ReadLine();
{ // this line is backwards as I prev. submitted
} // there are also to many braces one should be removed
}

This would not work for me. I had to change it as follows:

using System.ServiceModel;

static void Main(string[] args)
{
ServiceHost host = new ServiceHost(typeof(HelloIndigoService));
host.Open();
Console.WriteLine("Press <ENTER> to terminate the host application");
Console.ReadLine();
}


Anonymous  May 11, 2010 
Printed Page 33
Top of page, code example (5/09 printing)

In the code example that ends at the top of page 33, it shows:

Console.WriteLine("Press <ENTER> to terminate the host application");
Console.ReadLine();
{ // this brace is backwards
}
}

It should be:

Console.WriteLine("Press <ENTER> to terminate the host application");
Console.ReadLine();
}
}
}

Anonymous  May 11, 2010 
Printed Page 37
#1

Under "Generating a proxy with Add Service Reference", bullet # 1 says to right-click on the Client node and select Add Service Reference. There is no "Add Service Reference" menu item in Visual Studio 2008 when using Visual Basic as the source language.

This could be because the Visual Studio Conversion Wizard always opens anytime I open a solution downloaded from the book's page on the oreilly site.

When creating a Console application from scratch the Add Service Reference is present/visible.

Anonymous  Feb 28, 2013 
Printed Page 40
#1 under the "Caution/Warning" (5/09 printing)

Under the "Caution/Warning" note, there is an example of what your command/path should look like if the path has spaces. It shows (part of the command):

svcutil /d:"c\Learning WCF\Labs\Chapter1\HelloIndigo\Client"

it is missing a ":". It should read as follows:

svcutil /d:"c:\Learning WCF\Labs\Chapter1\HelloIndigo\Client"

Anonymous  May 11, 2010 
PDF Page 41
Section "Service Template", line 13

The original text doesn't seem to make sense. Please check the suggestion below.

Original:

To host services belonging to a class library project you can either use the WCF Service Host create a separate host project for the service.

Suggestion:

... either use the WCF Service Host >>>or the WCF Service Library to <<< create ...

(added text between the "arrows")

Nelson Ferrari  Mar 22, 2010 
Printed Page 41
near end of main paragraph

Minor typo: "To host services belonging to a class library project you can either use the WCF Service Host create a separate host project for the service."

It appears "or" should be inserted before "create".

Dave Slayton  Jan 10, 2012 
Printed Page 43
1/3 down the page

"...is still useful for automating how proxies and service contracts generated..."

Think you're missing the word "are" before "generated".

Dave Slayton  Jan 10, 2012 
PDF Page 48
First paragraph

effect instead of affect:

Original text:
Different behaviors are available to clients and services,since the local affect on the service model also differs.

Should be:
Different behaviors are available to clients and services,since the local effect on the service model also differs.

Carlos Ceconi  Jul 06, 2012 
Printed Page 48
Example 1-10

The behavior on client side in the example is under ServiceBehavior, it should be under ClientBehavior tag

Original:
<behaviors>
<serviceBehavior>
<behavior name="clientBehavior">
...
</behavior>
</serviceBehavior>
</behaviors>

Corrected:
<behaviors>
<clientBehavior>
<behavior name="clientBehavior">
...
</behavior>
</clientBehavior>
</behaviors>

Niraj Doshi  Jan 14, 2018 
Printed Page 92
Customising message parameters sect 1

I think the interface defined in the lab is invalid
Visual Studio 2008 complains if I enter
string NewOperations(string string);

It is expecting an identifier so I would change it to something like
string NewOperations(string newstring);

Keith Hobbs  Jan 27, 2010 
Printed Page 100
example 2-8, NewOperationResult element of response message body

In both examples on this page and the next, it appears that the string "hello" is being passed as an argument to NewOperation() and yet the response message body reads, in part,
<NewOperationResult>IServiceA.NewOperation() invoked with </NewOperationResult>

Shouldn't it read "invoked with hello" just as the one on the top of the next page does?

Dave Slayton  Jan 16, 2012 
Printed Page 104
Figure 2-3

Two flow chart boxes on the bottom right corner are incorrect. It should be V2 Service Contract (Yes Inheritance) and V1 Endpoint. So if you follow the flow chart from the top, it should be:

V1 Service Contract Changed --> Operation Changed (N) --> Operation Added? (Y) --> V2 Service Contract (Yes Inheritance) --> V1 Endpoint.

Sam Kim  Apr 15, 2012 
Printed Page 108
last line above tip/suggestion at bottom of page

domain for the type listed as shemas.datacontract.org where it should be schemas.datacontract.org

Dave Slayton  Dec 19, 2011 
Printed Page 119
second "code snippet"

Each of the three [EnumMember(Value=blah] items are missing their right parentheses.

Dave Slayton  Jan 17, 2012 
Printed Page 120
1/3 down the page

"You can also use the ContactNamespaceAttribute to automatically..."

That should be "ContractNamespaceAttribute".

Dave Slayton  Jan 17, 2012 
Printed Page 138
3rd Paragraph, line 9 from the bottom

"you can modify the client's version of the SaveGigRequest message contract" should be "version of the GetGigRequest message contract"

Anonymous  Sep 23, 2010 
Printed Page 168
top of page

top of page 168:

"In this lab, *you'll exposed* web service endpoints....."

Future and past tense in the same phrase.

Anonymous  Jan 19, 2012 
Printed Page 183
last line

Minor discrepancy between supplied working code and the printed book: book reports the name of the script to be run is Photos_DeleteAll.sql when the file name of the script supplied in the sample code is photos_deleteallrecords.sql.

Dave Slayton  Jan 22, 2012 
Printed Page 194
3rd line upper code snippet

// During intialization

should read

// During initialization

Dave Slayton  Jan 23, 2012 
Printed Page 194
last line in first code snippet

is

S_serviceHost.MyHost.Close();

correct? The 'S' is capitalized, for one thing, and what about the "MyHost" part?

Dave Slayton  Jan 23, 2012 
Printed Page 200
subsection "Duplex proxies"

I jumped right into the Section "One-Way and Duplex Communication" because I need it in my work, so it could be that I miss something from earlier pages of the book and therefore don't understand this issue, but please look yourself, you say:

DuplexClientBase<T> provides a special constructor that requires a reference to the callback contract implementation, wrapped in an InstanceContext, as shown here:

public partial class HelloIndigoContractClient : System.ServiceModel.DuplexClientBase<Client.localhost.HelloIndigoContract>, Client.localhost.HelloIndigoContract {...}

So, it looks like you are inheriting the class from DuplexClientBase<T> and from T itself, so T must be an interface, since multiple inheritance isn't allowed! So in your code T must be inferred to Client.localhost.HelloIndigoContract and because you omitted the letter "I" before HelloIndigoContract then you either don't follow the "I" prefix convention for interfaces in this example or there is a sort of error in the code. Also I don't see where
InstanceContext is working in this code. Last question: Is Client.localhost a namespace? Is it defined earlier in the book? I skimmed through the pages but I did not find it.

Anonymous  Feb 06, 2011 
Printed Page 201
very near bottom

"This is a problematic for machines....."

I think the "a" is extraneous there.....

Dave Slayton  Jan 23, 2012 
Printed Page 202
first line of first paragraph of lab

"...duplex communication over NetTpcBinding and..."

should be "NetTcpBinding" right?

Dave Slayton  Jan 23, 2012 
Printed Page 214
in lab step 2

In all these errors I've been reporting, I'm using the printed version that has
[LSI] and [2011-02-07]
at the bottom of the colophon page....
but I'm starting to wonder if there isn't some kind of pagination discrepancy happening here, relative to the reported errors...I see that there's one reported as being on page 211, the same thing I came to report: "the" misspelled as "teh" in the 4th line of step 2 of the lab. However, since I supposedly have the newest printing, and the errata report a very similar error was already fixed, but on page 211, not 214....and besides if it's really the same error, it HASN'T been fixed. Confusion reigns I guess.

Dave Slayton  Jan 24, 2012 
Printed Page 237
inside example 4-1

This is from printed copy with [LSI][2011-02-07] on colophon page.
Regarding the code example: it's supposed to closely mimic the earlier examples, such as the one on page 23, or so it appears. Then, will this code work? Here you're using no base address in creating the ServiceHost instance, so isn't the FULL URL supplied to AddServiceEndpoint() incomplete? Shouldn't it be
"net.tcp://localhost:9000/HelloIndigo/HelloIndigoService"
??
Or am I misunderstanding?

Dave Slayton  Jan 25, 2012 
Printed Page 238
very first line (code)

again: colophon has [LSI][2011-02-07]

Likewise here if the complete address (with no base address) is designed to replace the one used in the programmatic section on the previous page, shouldn't
"net.tcp://localhost:9000/HelloIndigoService"
actually say
"net.tcp://localhost:9000/HelloIndigo/HelloIndigoService"
in order to be complete? Or do I just not get this?

Dave Slayton  Jan 25, 2012 
Printed Page 238
disregard previous two reports

Please disregard the previous two reports from me. I now think I was wrong. I have sent an email to the author pleading for info to help clear up my lack of understanding.

Dave Slayton  Jan 25, 2012 
Printed Page 319
4th line

2011--02-07 reprint

"the callback return simply reaquires the lock"

should be "reacquires"...

Dave Slayton  Jan 30, 2012 
Printed Page 329
3rd line of note

(wow don't you have the capability of simply running a spell check on the electronic manuscript to avoid typos?)

"yeild" should be "yield"

Dave Slayton  Feb 01, 2012 
Printed Page 414
middle

"Advanced dettings" !?

I guess you mean "Advanced settings" unless "detting" is some new WCF concept I don't understand yet.....

Dave Slayton  Feb 01, 2012 
Printed Page 431
4th line from the bottom

"used" is misspelled here as "ussed"

Dave Slayton  Feb 09, 2012 
Printed Page 439
Example 7-4 web.config file

line 12: <behavior name = "serviceBehavior" [>]
Shouldn't there be a closing "forward slash" for this line?

Jim Kay  Nov 15, 2012 
Printed Page 516
2nd Tip icon text

This is for the 1st edition of the book. The <YourLearningWCFPath>\Samples\Exceptions\ThrowingFaults code sample is missing from the downloaded code included in the LearningWCF.ZIP (and also the LearningWCFVS2008.ZIP) file.

Anonymous  Feb 02, 2010 
Printed Page 518
Tip icon text

This is for the 1st edition of the book. The <YourLearningWCFPath>\Samples\Exceptions\FaultDataContracts code sample is missing from the downloaded code included in the LearningWCF.ZIP (and also the LearningWCFVS2008.ZIP) file.

Anonymous  Feb 02, 2010