Learning WCF: A Hands-on Guide by Michele Leroux Bustamante The unconfirmed error reports are from readers. They have not yet been approved or disproved by the author or editor and represent solely the opinion of the reader. Here's a key to the markup: [page-number]: serious technical mistake {page-number}: minor technical mistake : important language/formatting problem (page-number): language change or minor formatting problem ?page-number?: reader question or request for clarification This page was updated June 16, 2008. UNCONFIRMED errors and comments from readers: (xxiv) 7th line down from the top; brian should be Brian {3.2} 3.2 WebServiceBindings solution; The included solution points to the wrong location for the Common projects....needs to go one more level up. (3) From OOP to SOA (2nd sentence); 'principals' is wrongly used in place of 'principles' eg. The principals behind enterprise system design are far-reaching [13] Figures 1-11 and 1-12; What does DALC stand for? Data Access Logic Component? Deployment Area Location Code? {23} a step of the lab; On Vista it's required to configure the acl in order to allow the binding for the Host process. This step is not undocumented and generate an exception while debugging. See http://msdn2.microsoft.com/en-us/library/ms733768.aspx for more info {32} Item 2; In the March 2007 Orcas CTP, you will need to change the target framework from 3.0 to 3.5 after converting the project. If you do not, you will not be able to add the service template to the host project. See my blog post here: http://daveonsoftware.blogspot.com/2007/07/unable-to-add-wcf-service- template-to.html for more information. {33} Item 1 at the bottom of the page; In the March 2007 Orcas CTP, you cannot right click on the app.config file and the select the WCF service configuration manager. The user will have to open the service configuration manager via the start menu ( start -> programs files -> Microsoft SDK -> tools -> Service Configuration Editor shortcut). Afterwards, you can open the app.config file via the service configuration manager's file menu. [36] Item 5; Enabling metadata. Contract property type should be Host.IHelloIndigoService on the metadata endpoint and not IMetaDataExchange in the app.config. IMetaDataExchange will not compile. Also when you create the Service Behavior, on the serviceMetaData tag you have to opt-in with the attribute httpGetEnabled="true" and not left empty as directed. {38} First code snippet, at top of page; Missing semicolon after localhost.HelloIndigoServiceClient proxy = new Client.localhost.HelloIndigoServiceClient() (40) Point 2; For Visual Studio 2005 SP1: using (HelloIndigoServiceClient proxy = new HelloIndigoServiceClient()) should be: HelloIndigoServiceClient proxy = new HelloIndigoServiceClient(); {48} Example 1-10; The element is shown declared within the element, but the previous paragraph(s) describes that client behaviors should be declared within . I believe it should read: ... ... \ {52} Point 6; should be {54} code sample under bullet 4; Instead of: the code should read: {56} 1st code snippet; missing semicolon HelloIndigoServiceClient proxy = new HelloIndigoServiceClient() {60} 2nd config snippet; should be {62} Last paragraph; Implement both contracts implicitly. You can ... to select "Implement interface IServiceA"... Should be Implement both contracts explicitly. You can ... to select "Explicitly implement interface IServiceA"... {63} Item 3.; Follow a similar step... . Implement both interfaces implicitly... Should be Follow a similar step... . Implement both interfaces explicitly... {64} Bullet 2, paragraph 3; You state "They [the services shown in figure 1-19] also expose mex endpoints and enable the service metadata behavior for proxy generation." But that is not true; there are no mex endpoints. (77) tip; [...] ServiceContracts\Samples\ [...] should be [...] Samples\ServiceContracts\ [...] {89} Step number 1. under "Customizing message parameters"; string NewOperation(string string); should probably be: string NewOperation(string s); {107} 1st paragraph; On p107 book says "...implicit value for minOccurs, which is 1", but on p113 book says: 1)"IsRequired ... by default, all elements are optional (minOcurrs=0)" 2)"By default all data memebers are... and they become non-required schema elements". {132} Example 2-37 SOAP code; should be (135) 3rd paragraph from the top; The sentence: "The MustUnderstand property can be useful when the header is {a} required to sucessfully process messages." The {a} should be removed. [208] Example 3-26; m_listCallbacks.Add(id, subscriber); should be: m_listCallbacks.Add(id, callback); {202} Example 3-20; The example should have: namespace Client { existing example of the CallbackType class } Otherwise the reference to localhost will not be resolved. This is how the completed code example does it. [209] Top of page (continuation of example 3-26); This line is unnecessary: IPublisherEvents callback = OperationContext.Current.GetCallbackChannel(); Line 4: if (m_listCallbacks.ContainsKey(callback)) should be: if (m_listCallbacks.ContainsKey(id)) {216} Step 5 at top of page;