Udostępnij za pośrednictwem


SoapException.Code Właściwość

Definicja

Pobiera typ kodu błędu PROTOKOŁU SOAP.

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

Wartość właściwości

Element XmlQualifiedName określający kod błędu PROTOKOŁU SOAP, który wystąpił.

Przykłady

Poniższy przykład formularza sieci Web wywołuje metodę Math usługi sieci Web, która zgłasza wyjątek, jeśli wystąpi podział o zero. Po wyrzuceniu wyjątku formularz internetowy przechwytuje wyjątek i wyprowadza szczegóły wyjątku, w tym Actor właściwości i Code do kontrolki 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>

Aby poprzedni formularz sieci Web używał następującego Math przykładu usługi sieci Web XML, podczas tworzenia klasy serwera proxy określono przestrzeń nazw MyMath .

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

Uwagi

Właściwość Code można ustawić tylko podczas tworzenia nowego wystąpienia SoapException klasy.

Klasa SoapException jest używana przez klientów usługi sieci Web XML wywołujących metody usługi sieci Web XML za pośrednictwem protokołu SOAP. ASP.NET obsługuje, czy klient, który wywołuje protokół SOAP. Dzieje się tak, gdy wyjątek występuje w usłudze sieci Web XML. Jeśli klient używa protokołu SOAP, ASP.NET opakowuje określony wyjątek do elementu SoapException i ustawia Actor właściwości i Code .

Zestaw dostępnych kodów, znanych jako kody błędów PROTOKOŁU SOAP dla protokołu SOAP w wersji 1.1, są następujące:

Element Opis
VersionMismatchFaultCode Znaleziono nieprawidłową przestrzeń nazw koperty PROTOKOŁU SOAP.
MustUnderstandFaultCode Nie wszystkie elementy PROTOKOŁU SOAP wymagają przetwarzania. Jeśli jednak element SOAP jest oznaczony atrybutem MustUnderstand o wartości 1, jest wymagany. Nie można przetworzyć elementu, który generuje ten wyjątek.
ClientFaultCode Wywołanie klienta nie zostało poprawnie sformatowane lub nie zawiera odpowiednich informacji. Na przykład wywołanie klienta może nie mieć odpowiednich informacji dotyczących uwierzytelniania ani płatności. Zazwyczaj jest to wskazanie, że wiadomość musi zostać zmieniona, zanim zostanie ponownie wysłana.
ServerFaultCode Wystąpił błąd podczas przetwarzania wywołania klienta na serwerze, jednak problem nie jest spowodowany zawartością komunikatu. Na przykład serwer nadrzędny może nie odpowiadać na żądanie z powodu problemów z siecią. Zazwyczaj w przypadku tego typu wyjątku wywołanie klienta może zakończyć się powodzeniem później. Jeśli usługa sieci Web XML zgłasza wyjątek, inny niż SoapException i klient wywołuje przy użyciu protokołu SOAP, ASP.NET konwertuje wyjątek na , ustawiając Code właściwość ServerFaultCode na SoapExceptioni zgłasza ją z powrotem do klienta.

Dotyczy

Zobacz też