Programming .NET Web Services by Matthew MacDonald, Alex Ferrara This errata page lists errors outstanding in the most recent printing. If you have technical questions or error reports, you can send them to booktech@oreilly.com. Please specify the printing date of your copy. This page was updated March 12, 2007. 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 Confirmed errors: (3) first indented paragraph; "A web service could be used ... to help an e-commerce company interacts..." should be "A web service could be used ... to help an e-commerece company interact..." (3) second indented paragraph ; "... who would see the functionality is an integrated part of your application" should be "... who would see the functionality as an integrated part of your application" (6) third paragraph after figure 1-1; "But the solution employed by DCOM ... adds too much overhead and just don't make sense" should be "But the solution employed by DCOM ... adds too much overhead and just doesn't make sense". (23) first tip; "a global assembly cache" should be "the global assembly cache". Using "a" implies that there can be multiple global assembly caches, which is not the case. (26) second sentence after figure 2-1; "Under Visual C# projects, one template option creates an ASP.NET web service, while our examples use the C# language, the same option available as a Visual Basic project, and similar options for Managed C++ as well." Should be: "Under Visual C# projects, one template option creates an ASP.NET web service. While our examples use the C# language, the same option is available as a Visual Basic project, and similar options for Managed C++ as well." (26) 6th line below the Figure 2-1. "fior" should be "for" (26) paragraph above "Exploring the solution and project"; "automatically populate" should be "automatically populates". (29) second paragraph from the bottom; "but you will probably want to change to something more suitable" should be "but you will probably want to change it to something more suitable". (33) 2nd paragraph; The sentence "In our example, the endpoint comes is an .asmx page" should be: "In our example, the endpoint comes as an .asmx page"? (43) first paragraph; There is a problem in the fourth line: ".NET implements this type of matching ... by system by storing" should be ".NET implements this type of matching ... by storing". (49) first paragraph, last word; The sentence ending "...and creating a new folder called root." should be "...and creating a new folder called bin." (56) in "Deficincies in Publish/Find/Bind" box at top of page; 4th line: "... one of the deficincies in this process is that is does not take into accout" should be "... one of the deficincies in this process is that it does not make into account". last line: "At this point, however, this feature is this feature is more conversational than substance" should be: "At this point, however, this feature is more conversational than substance" (59) Last code sample; In the first line: public class MyClass : IMyInterface, IMOtherInterface "IMOtherInterface" should be "IMyOtherInterface" (62) fourth paragraph from bottom; "HTTP 1.1" should be "HTTP/1.1" (63) last paragraph; "application/x-www-form-urlencode" should be "application/x-www-form-urlencoded" (79) second paragraph from the bottom; remove the sentence fragment "Add Web Reference feature." (90-91) entire section; "HTTPWebClientProtocol" should be "HttpWebClientProtocol" in the heading on page 90 and throughtout the section. (91) UserAgent property description; In the description of UserAgent, "User Agent" appears twice. It should be "UserAgent". (96) end of first paragraph; "regular expression" should be "regular expressions". (100) third last line; "masses 7in a" should be "masses in a". (101) third line; "Some architecture" should be "Some architectures" (102) first line of first paragraph; The sentence "XML documents, including WSDL files and SOAP messages, and go hand in hand with XML Schemas." it should be: "XML documents, including WSDL files and SOAP messages, go hand in hand with XML Schemas." (110) definition of class Video in Example 4-5; public arrArrayList Producer = new ArrayList(); should be: public ArrayList arrProducer = new ArrayList(); (112) in figure 4-2; "System.ml.XmlWriter" should be "System.Xml.XmlWriter" and "System.ml.XmlReader" should be "System.Xml.XmlReader" (134) last paragraph; The word "at" is missing from "...we'll change focus and look an important design decision you'll face when developing a web service". It should be "...we'll change focus and look at an important design decision you'll face when developing a web service". (157) first paragraph; "However, it the client requires..." should be "However, if the client requires...". (165) Point 1. in "Using SOAP Headers"; "and sets it values" should be "and sets its values". (205) first paragraph of "Data Caching"; The third sentence is incomplete: "With data caching, you can add the specific data you want to the cache and retrieve it any point." it should be: "With data caching, you can add the specific data you want to the cache and retrieve it at any point." (208) first paragraph; The paragraph refers to "DateTime.Max" it should be: "DateTime.MaxValue". (219) paragraph above Figure 7-3; "Figures 7-3" should be "Figure 7-3". (219) Figure 7-3; The code on page 218 disagrees with the output in Figure 7-3. The code uses "Before" and "After" while Figure 7-3 uses "Cach (sic) contents before" and "Cache contents after". (248) last paragraph of "The SOAP Extension Classes"; "Remember, SOAP extension work on a per-method basis" should be "Remember, SOAP extensions work on a per-method basis". (249) 2nd, 4th, 7th, 9th point of the order of occurences in the ProcessMessage; "ProcessRequest()" should read: "ProcessMessage()" (250) last paragraph; "However, you may not have not created" should be "However, you may not have created". [255] 2nd paragraph; From the text on the page 255 (and the example on page 257) seems that the GetInitializer(Type serviceType) is used to retrieve the type of initializer that is returned by the GetInitializer (LogicalMethodInfo methodInfo, SoapExtensionAttribute attribute). Actually it's not right. The GetInitializer(Type serviceType) is used if the SOAP extension is configured using a configuration file - not using an attribute of Web method. If this is right the GetInitializer(Type serviceType) method (page 257) can't return type of filename. AUTHOR: This is correct. The upshot is that though the example works as written, if you tried to apply the SOAP extension using a confi- guration file attribute, it would not work (due to this error). (277) in figure 9-6; The closing bracket is missing in the "Access Denied (return .NET error" box. (323) first paragraph of "The Inquiry API"; "As a result, there only about 25" should be "As a result, there are only about 25". (363) Last sentence of 1st paragraph; "In most cases, using RemotingConfiguration.Configure() avoids hardcoding ..." should be "In most cases, using RemotingConfigurationEx.Configure() avoids hardcoding ..."