Freigeben über


SoapException.Code Eigenschaft

Definition

Ruft den Typ des SOAP-Fehlercodes ab.

public:
 property System::Xml::XmlQualifiedName ^ Code { System::Xml::XmlQualifiedName ^ get(); };
public System.Xml.XmlQualifiedName Code { get; }
member this.Code : System.Xml.XmlQualifiedName
Public ReadOnly Property Code As XmlQualifiedName

Eigenschaftswert

Ein XmlQualifiedName, der den Code des aufgetretenen SOAP-Fehlers angibt.

Beispiele

Im folgenden Webformularbeispiel wird die Math Webdienstmethode aufgerufen, die eine Ausnahme auslöst, wenn eine Division durch 0 erfolgt. Sobald die Ausnahme ausgelöst wurde, fängt das Webformular die Ausnahme ab und gibt die Ausnahmedetails, einschließlich der Actor Eigenschaften und Code , in einem Steuerelement aus HtmlTable .

<%@ Page Language="C#" %>
<html>
 <head>
 <script runat=server language="C#">
   void Page_Load(Object o, EventArgs e)
   {
     
   int UsageCount;
   // Create a new instance of the proxy class.
   MyMath.Math math = new MyMath.Math(); 
   // Make a call to the Math XML Web service, which throws an exception.
   try
       {
       math.Divide(3, 0);
       }
   catch (System.Web.Services.Protocols.SoapException error)
       {
       // Populate the table with the exception details.
       ErrorTable.Rows.Add(BuildNewRow("Fault Code Namespace", error.Code.Namespace));
       ErrorTable.Rows.Add(BuildNewRow("Fault Code Name", error.Code.Name));        
       ErrorTable.Rows.Add(BuildNewRow("SOAP Actor that threw Exception", error.Actor));        
       ErrorTable.Rows.Add(BuildNewRow("Error Message", error.Message));        
       return;
       }
   }
 
   HtmlTableRow BuildNewRow(string Cell1Text, string Cell2Text)
   {
       HtmlTableRow row = new HtmlTableRow();
       HtmlTableCell cell1 = new HtmlTableCell();
       HtmlTableCell cell2 = new HtmlTableCell();
         
       // Set the contents of the two cells.
       cell1.Controls.Add(new LiteralControl(Cell1Text));
       // Add the cells to the row.
       row.Cells.Add(cell1);
     
       cell2.Controls.Add(new LiteralControl(Cell2Text));
     
       // Add the cells to the row.
       row.Cells.Add(cell2);
       return row;
     }
 </script>
 </head>
 <body>
     <table id="ErrorTable"
        CellPadding=5 
        CellSpacing=0 
        Border="1" 
        BorderColor="black" 
        runat="server" />
 </body>
<%@ Page Language="VB"%>
<html>
 <head>
 <script runat=server language="VB">
Sub Page_Load(o As Object, e As EventArgs)    
    Dim UsageCount As Integer
    ' Create a new instance of the proxy class.
    Dim math As New MyMath.Math()
    ' Make a call to the Math XML Web service, which throws an exception.
    Try
        math.Divide(3, 0)
    Catch err As System.Web.Services.Protocols.SoapException
        ' Populate our Table with the Exception details
        ErrorTable.Rows.Add(BuildNewRow("Fault Code Namespace", err.Code.Namespace))
        ErrorTable.Rows.Add(BuildNewRow("Fault Code Name", err.Code.Name))
        ErrorTable.Rows.Add(BuildNewRow("SOAP Actor that threw Exception", err.Actor))
        ErrorTable.Rows.Add(BuildNewRow("Error Message", err.Message))
        Return
    End Try
End Sub 'Page_Load


Function BuildNewRow(Cell1Text As String, Cell2Text As String) As HtmlTableRow
    Dim row As New HtmlTableRow()
    Dim cell1 As New HtmlTableCell()
    Dim cell2 As New HtmlTableCell()
    
    ' Set the contents of the two cells.
    cell1.Controls.Add(New LiteralControl(Cell1Text))
    ' Add the cells to the row.
    row.Cells.Add(cell1)
    
    cell2.Controls.Add(New LiteralControl(Cell2Text))
    
    ' Add the cells to the row.
    row.Cells.Add(cell2)
    Return row
End Function 'BuildNewRow
 </script>
 </head>
 <body>
     <table id="ErrorTable"
        CellPadding=5 
        CellSpacing=0 
        Border="1" 
        BorderColor="black" 
        runat="server" />
 </body>

Damit das vorherige Webformular das folgende Math XML-Webdienstbeispiel verwenden kann, wurde bei der Erstellung der Proxyklasse ein Namespace von MyMath angegeben.

<%@ WebService Language="C#" Class="Math"%>
 using System.Web.Services;
 using System;
 public class Math : WebService {
     [WebMethod]
     public float Divide(int dividend, int divisor) {
         if (divisor == 0)
             throw new DivideByZeroException();
 
         return dividend/divisor;
     }
  }
<%@ WebService Language="VB" Class="Math"%>
Imports System.Web.Services
Imports System

Public Class Math
    Inherits WebService

    <WebMethod()> _
    Public Function Divide(dividend As Integer, divisor As Integer) As Single
        If divisor = 0 Then
            Throw New DivideByZeroException()
        End If 
        Return Convert.ToSingle(dividend / divisor)
    End Function 'Divide
End Class  'Math

Hinweise

Die Code -Eigenschaft kann nur beim Erstellen eines neuen instance der SoapException -Klasse festgelegt werden.

Die SoapException -Klasse ist für die Verwendung durch XML-Webdienstclients vorgesehen, die XML-Webdienstmethoden über SOAP aufrufen. ASP.NET behandelt, ob der Client, der SOAP aufruft, verwendet. Dies ist der Fall, wenn eine Ausnahme in einem XML-Webdienst auftritt. Wenn der Client SOAP verwendet, umschließt ASP.NET die spezifische Ausnahme in eine SoapException und legt die Actor Eigenschaften und Code fest.

Die verfügbaren Codes, die als SOAP-Fehlercodes für SOAP-Protokoll Version 1.1 bezeichnet werden, sind die folgenden:

Element Beschreibung
VersionMismatchFaultCode Ein ungültiger Namespace für einen SOAP-Umschlag wurde gefunden.
MustUnderstandFaultCode Nicht alle SOAP-Elemente müssen verarbeitet werden. Wenn ein SOAP-Element jedoch mit dem Attribut mit dem MustUnderstand Wert 1 gekennzeichnet ist, ist es erforderlich. Wenn das Element nicht verarbeitet wird, wird diese Ausnahme generiert.
ClientFaultCode Ein Clientaufruf war nicht ordnungsgemäß formatiert oder enthielt nicht die entsprechenden Informationen. Beispielsweise verfügt der Clientaufruf möglicherweise nicht über die richtigen Authentifizierungs- oder Zahlungsinformationen. Dies ist im Allgemeinen ein Hinweis darauf, dass die Nachricht geändert werden muss, bevor sie erneut gesendet wird.
ServerFaultCode Während der Verarbeitung eines Clientaufrufs auf dem Server ist ein Fehler aufgetreten. Das Problem ist jedoch nicht auf den Inhalt der Nachricht zurückzuführen. Beispielsweise reagiert ein Upstream Server aufgrund von Netzwerkproblemen möglicherweise nicht auf eine Anforderung. Bei diesem Ausnahmetyp kann der Clientaufruf in der Regel später erfolgreich sein. Wenn ein XML-Webdienst eine Ausnahme auslöst, die nicht SoapException und der Client mithilfe von SOAP aufruft, konvertiert ASP.NET die Ausnahme in ein SoapException, legt die Code -Eigenschaft auf ServerFaultCode fest und wirft sie zurück an den Client.

Gilt für:

Weitere Informationen