次の方法で共有


SoapException クラス

XML Web サービス メソッドが SOAP 経由で呼び出され、例外が発生したときにスローされる例外。

この型のすべてのメンバの一覧については、SoapException メンバ を参照してください。

System.Object
   System.Exception
      System.SystemException
         System.Web.Services.Protocols.SoapException
            System.Web.Services.Protocols.SoapHeaderException

Public Class SoapException
   Inherits SystemException
[C#]
public class SoapException : SystemException
[C++]
public __gc class SoapException : public SystemException
[JScript]
public class SoapException extends SystemException

スレッドセーフ

この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。

解説

SoapException は、共通言語ランタイムまたは XML Web サービス メソッドのいずれかによってスローされる場合があります。共通言語ランタイムは、要求に対する応答の書式が正しく設定されていない場合に SoapException をスローすることがあります。XML Web サービス メソッドは、XML Web サービス メソッド内で単に例外をスローすることによって SoapException を生成することがあります。クライアントが SOAP 経由でメソッドにアクセスした場合、例外はサーバーでキャッチされ、新しい SoapException 内にラップされます。スローされる SoapException には、次のプロパティ値があります。

プロパティ
Message 元の例外の Message プロパティ。
Code ServerFaultCode.
Actor XML Web サービス メソッドの URL。
Detail null 参照 (Visual Basic では Nothing) 。ただし、違反要素には空の詳細要素が存在します。

クライアントが SOAP 経由で呼び出しを行うことが確実になった時点で、XML Web サービス メソッドが SoapException をスローすることがあります。XML Web サービスが SoapException をスローする場合は、その他の詳細情報を ActorCodeDetail の各プロパティを使用して追加できます。別の種類の例外がスローされた場合は、これらのプロパティを XML Web サービス メソッドでは設定できません。

使用例

[Visual Basic, C#] SoapException をスローする例を次に示します。この例では、XML Web サービス メソッドが Detail プロパティを設定します。

 
<%@ 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 XML Web service method generates 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


[C#] 
<%@ 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 XML Web service method generates 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;    }
}

[C++, JScript] C++ および JScript のサンプルはありません。Visual Basic および C# のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

名前空間: System.Web.Services.Protocols

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET

アセンブリ: System.Web.Services (System.Web.Services.dll 内)

参照

SoapException メンバ | System.Web.Services.Protocols 名前空間