Web services are one of the most hyped parts of the whole .NET extravaganza. The idea is that Web services can form a component technology for the intranet and the Internet, just as COM offers a component technology for the desktop. Up until now, the Internet has been dominated by e-mail and Web browsers, both used extensively by people, whereas the vision of Web services is that applications can communicate with each other over the Internet as easily as people.
The first part of this chapter covers how to set up a Web service and its clients for debugging. Web services offer a rather different debugging experience from desktop applications. When debugging Web services, you have to deal with potential complications caused by elements such as firewalls, security, Internet Information Server (IIS), ASP .NET, HTTP, and the Simple Object Access Protocol (SOAP). When everything works smoothly, you can step seamlessly from a client application into a Web service and back again. However, when debugging doesn't work so well, you usually need some understanding of the underlying technologies to identify exactly where the debugging process is failing. This chapter aims to give you a good introduction to these underlying technologies.
The second part of this chapter looks at various "how-to" scenarios. It starts by debugging a very simple Web service when using Internet Explorer as a client. Then it examines debugging a Windows Forms application invoking the same Web service, continuing with an introduction to debugging issues raised by proxy components and SOAP. In the final "how-to" section, you'll see how to debug a remote Web service and a Web service that's already been deployed into production.
The final part of the chapter examines exception handling and SOAP message logging. First I discuss ways in which a Web service client can deal with exceptions thrown by a Web service and how a Web service should deal with unhandled exceptions. Then you'll learn how to intercept and log raw SOAP messages at both the Web service and client ends of the message flow.