How to: Throw Exceptions from a Web Service Created Using ASP.NET

This topic is specific to a legacy technology. XML Web services and XML Web service clients should now be created using Windows Communication Foundation.

Code Example

The following code example throws a SoapException and provides additional details about the exception by setting the Detail property. For more on throwing exceptions from ASP.NET Web services, see Handling and Throwing Exceptions in XML Web Services.

Example

<%@ WebService Language="VB" class="ThrowSoapException"%>

Imports System
Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports System.Xml.Serialization
Imports System.Xml

Public Class ThrowSoapException
    Inherits WebService
    
    ' This Web service method throws a SOAP client fault code. 
    <WebMethod()> _
    Public Sub myThrow()
        
        ' Build the detail element of the SOAP fault.
        Dim doc As New System.Xml.XmlDocument()
        Dim node As System.Xml.XmlNode = _
            doc.CreateNode(XmlNodeType.Element, _
            SoapException.DetailElementName.Name, _
            SoapException.DetailElementName.Namespace)
 
        ' Build specific details for the SoapException.
        ' Add first child of detail XML element.
        Dim details As System.Xml.XmlNode = _ 
            doc.CreateNode(XmlNodeType.Element, _
            "mySpecialInfo1", "http://tempuri.org/")

        ' Add second child of detail XML element with an attribute.
        Dim details2 As System.Xml.XmlNode = _
            doc.CreateNode(XmlNodeType.Element, _
            "mySpecialInfo2", "http://tempuri.org/")
        Dim attr As XmlAttribute = doc.CreateAttribute("t", _ 
            "attrName", "http://tempuri.org/")
        attr.Value = "attrValue"
        details2.Attributes.Append(attr)

        ' Append the two child elements to the detail node.
        node.AppendChild(details)
        node.AppendChild(details2)
                
        'Throw the exception.
        Dim se As New SoapException("Fault occurred", _
            SoapException.ClientFaultCode, _
            Context.Request.Url.AbsoluteUri, node)
        Throw se
        Return
    End Sub
End Class
<%@ WebService Language="C#" class="ThrowSoapException"%>

using System;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Serialization;
using System.Xml;

public class ThrowSoapException : WebService 
{
    // This Web service method throws a SOAP client fault code.
    [WebMethod]
    public void myThrow(){

        // Build the detail element of the SOAP fault.
        System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
        System.Xml.XmlNode node = doc.CreateNode(XmlNodeType.Element,
             SoapException.DetailElementName.Name,              SoapException.DetailElementName.Namespace);

        // Build specific details for the SoapException.
        // Add first child of detail XML element.
        System.Xml.XmlNode details =
          doc.CreateNode(XmlNodeType.Element, "mySpecialInfo1",
                         "http://tempuri.org/");
        System.Xml.XmlNode detailsChild = 
          doc.CreateNode(XmlNodeType.Element, "childOfSpecialInfo",
                         "http://tempuri.org/");
        details.AppendChild(detailsChild);
            
        // Add second child of detail XML element with an attribute.
        System.Xml.XmlNode details2 =
          doc.CreateNode(XmlNodeType.Element, "mySpecialInfo2",
                         "http://tempuri.org/");
        XmlAttribute attr = doc.CreateAttribute("t", "attrName",
                            "http://tempuri.org/");
        attr.Value = "attrValue";
        details2.Attributes.Append(attr);

        // Append the two child elements to the detail node.
        node.AppendChild(details);
        node.AppendChild(details2);
            
        //Throw the exception    
        SoapException se = new SoapException("Fault occurred",
          SoapException.ClientFaultCode,
          Context.Request.Url.AbsoluteUri ,
          node);

        throw se;
        return;
    }
}

See Also

Tasks

How to: Handle Exceptions Thrown by a Web Service Method

Reference

SoapException Class
SoapHeaderException Class

Concepts

Handling and Throwing Exceptions in XML Web Services
Building XML Web Service Clients

Other Resources

Handling and Throwing Exceptions
XML Web Services Using ASP.NET