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 をスローする場合は、その他の詳細情報を Actor 、 Code 、 Detail の各プロパティを使用して追加できます。別の種類の例外がスローされた場合は、これらのプロパティを 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 内)