Programming .NET Web Services by Matthew MacDonald, Alex Ferrara 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 March 12, 2007. UNCONFIRMED errors and comments from readers: {30} 4th line; "using System.ComponentModel;" is apparently required for the build to complete. This is consistent with the discussion on page 29. [33] Figure 2-5 Address field and following; Here and in several instances in following pages the service in the book is known as "HelloWorldService.cs.asmx" while on my system it comes out as "HelloWorldService.asmx". (38) first paragraph after Example 2.2; Example 2-2 and the paragraph after it do not agree on the namespace. The example refers to the namespace as "http://www.bostontechnical.com/webservices" while the paragraph omits the final 's' in "webservices" (in two locations - one at the beginning and one at the end of the paragraph). {44} title; Title "The BufferedResponse Property" should be "The BufferResponse Property" {60} bottom; after inputting the GET command using telnet, the line "Host: localhost" must be input, and then an extra blank line must be input. The issue of the extra blank line iextension is configured using a configuration file s not obvious, and should be noted to the reader. {64} 3rd paragraph; "...it is important to call the base class Finalize() method as well..." This is actually impossible, as the complier objects with: "Do not directly call your base class Finalize method. It is called automatically from your destructor." (At least this is the case using Visual Studio 2003 and Framework v 1.1) (78) tip at the bottom of the page; Something is wrong with the parentheses in the tip - there are two close parantheses and no open parentheses. (93) second line; "HttpClientProtocol" should be "HttpWebClientProtocol". [93] Consuming a Web Site Using Screen Scraper Service; Screen scraping is not a lawful act as the source ("content") is the property of its author. Moreover, the layout (and other media) of the source is included in this copyright. So taking information and displaying/saving some composite parts is not lawful at all. Many commercial websites provide these legal statements (e.g. IMDB http://www.imdb.com/conditions, IgoUgo http://igougo.com/terms/, etc). I would appreciate an "official" note/errata on that section stipulating that permissions are required to do so, especially for commercial use. [131] 3rd paragraph, last sentence; The last sentence refers to " ... a typed DataSet, called tDataSet ... created in Figure 4-9". Figure 4-9 (page 120) does not utilize a DataSet, much less a typed DataSet. {141} 1st paragraph; "...accounts will need to be accessed through separate proxy classes..." should be: "accounts will need to be accessed through seperate instances of proxy class..." {235} 1st paragraph; "should signal the thread to terminate, as demonstrated later." Where? in which example? or in text only? {237} last paragraph; Question: Where in the sourcecode do I have to include the call to Reset() ? I suppose that only one thread is allowed to do so. [252] Code sample 1; The code sample shows the mesage stream position being reset using message.Stream.Position=0; but when I try to implement this my SoapExtension exceptions with "This stream does not support seek operations". Without the seek the proxy class fails because the stream has had ReadToEnd() applied and is in the wrong position. (colophon) 2nd paragraph ; There are two occurrences of "It's", neither of which is correct. Both should be "Its". [339] Example 10-4; I tried example 10-4 with Visual Studio 2003 and Visual Studio 2005 with Service Pack 1 and I am unable to make this example work. I have checked the code and had colleagues check the code. We are unsure what the problem is. I created a console app to test this, it is at the bottom of the message. As you can see from my output at the bottom, the constructor is called twice and the integer value is incremented per object. // Start of cs file using System; using System.Text; using System.Diagnostics; namespace NotWorking { public class MySingleton : MarshalByRefObject { int m_Counter = 0; public MySingleton() { Trace.WriteLine("MySingleton.MySingleton()"); } public void TraceCounter() { m_Counter++; Trace.WriteLine(m_Counter); } } class Program { static void Main(string[] args) { MySingleton obj1; MySingleton obj2; Trace.WriteLine("Before call"); obj1 = new MySingleton(); Trace.WriteLine("After call"); obj1.TraceCounter(); obj1.TraceCounter(); Trace.WriteLine("Before call"); obj2 = new MySingleton(); Trace.WriteLine("After call"); obj2.TraceCounter(); obj2.TraceCounter(); } } } // end of cs file //Here is the output: Before call MySingleton.MySingleton() After call 1 2 Before call MySingleton.MySingleton() After call 1 2