Comment : lever des exceptions d'un service Web créé à l'aide d'ASP.NET

Cette rubrique est spécifique à une technologie existante. Les services Web XML et les clients du service Web XML doivent à présent être créés à l'aide de Windows Communication Foundation.

Exemple de code

L'exemple de code suivant lève une SoapException et fournit des informations supplémentaires concernant l'exception en définissant la propriété Detail. Pour plus d'informations sur la levée d'exceptions de services Web ASP.NET, consultez la Gestion et levée d'exceptions dans les services Web XML.

Exemple

<%@ 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;
    }
}

Voir aussi

Tâches

Comment : gérer les exceptions levées par une méthode de service Web

Référence

SoapException Class
SoapHeaderException Class

Concepts

Gestion et levée d'exceptions dans les services Web XML
Création de clients de service Web XML

Autres ressources

Handling and Throwing Exceptions
Services Web XML utilisant ASP.NET