次の方法で共有


SoapException.Code プロパティ

定義

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

プロパティ値

発生した SOAP 違反コードを指定する XmlQualifiedName

次の Web フォームの例では、Web サービス メソッドを Math 呼び出します。このメソッドは、0 による除算が発生した場合に例外をスローします。 例外がスローされると、Web フォームは例外をキャッチし、 プロパティと Code プロパティを含む例外のActor詳細を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>

上記の Web フォームで次 Math の XML Web サービスの例を使用するために、プロキシ クラスの作成時に の名前空間 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

注釈

プロパティは Code 、 クラスの SoapException 新しいインスタンスを作成する場合にのみ設定できます。

クラスは SoapException 、SOAP 経由で XML Web サービス メソッドを呼び出す XML Web サービス クライアントで使用されます。 ASP.NET は、 を呼び出すクライアントが SOAP を使用するかどうかを処理します。 これは、XML Web サービスで例外が発生した場合です。 クライアントが SOAP を使用する場合、ASP.NET は特定の例外を にSoapExceptionラップし、 プロパティと Code プロパティをActor設定します。

SOAP プロトコル バージョン 1.1 の SOAP フォールト コードと呼ばれる使用可能なコードのセットは次のとおりです。

Item 説明
VersionMismatchFaultCode SOAP エンベロープの無効な名前空間が見つかりました。
MustUnderstandFaultCode すべての SOAP 要素で処理が必要なわけではありません。 ただし、SOAP 要素の値が 1 の MustUnderstand 属性でマークされている場合は、必須です。 要素の処理に失敗すると、この例外が生成されます。
ClientFaultCode クライアント呼び出しの形式が正しくないか、適切な情報が含まれていませんでした。 たとえば、クライアント呼び出しに適切な認証または支払い情報がない場合があります。 通常は、メッセージを再送信する前に変更する必要があることを示しています。
ServerFaultCode サーバーでのクライアント呼び出しの処理中にエラーが発生しましたが、問題はメッセージの内容が原因ではありません。 たとえば、アップストリーム サーバーがネットワークの問題のために要求に応答しない場合があります。 通常、この種類の例外では、クライアント呼び出しは後で成功する可能性があります。 XML Web サービスが SOAP を使用して を呼び出す以外SoapExceptionの例外をスローした場合、ASP.NET は 例外を に変換し、 プロパティを CodeSoapExceptionServerFaultCode設定してクライアントにスローします。

適用対象

こちらもご覧ください