SoapException.Code Vlastnost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Získá typ kódu chyby 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
Hodnota vlastnosti
Určuje XmlQualifiedName kód chyby SOAP, ke kterému došlo.
Příklady
Následující příklad webového formuláře volá metodu Math webové služby, která vyvolá výjimku, pokud dojde k dělení nulou. Po vyvolání výjimky webový formulář zachytí výjimku a vypíše podrobnosti o výjimceHtmlTable, včetně Actor vlastností a Code vlastností do ovládacího prvku.
<%@ 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 předchozí webový formulář používal následující Math příklad webové služby XML, byl zadán obor názvů MyMath během vytváření třídy proxy.
<%@ 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
Poznámky
Code Vlastnost lze nastavit pouze při vytváření nové instance SoapException třídy.
Třída SoapException je určena pro klienty webové služby XML, kteří volají metody webové služby XML přes SOAP. ASP.NET zpracovává, jestli klient, který volá protokol SOAP. To je v případě, že ve webové službě XML dojde k výjimce. Pokud klient používá soap, ASP.NET zabalí konkrétní výjimku do SoapException a nastaví Actor a Code vlastnosti.
Sada dostupných kódů, označovaných jako kódy chyb SOAP pro protokol SOAP verze 1.1, jsou následující:
| Položka | Description |
|---|---|
| VersionMismatchFaultCode | Byl nalezen neplatný obor názvů obálky SOAP. |
| MustUnderstandFaultCode | Ne všechny elementy SOAP vyžadují zpracování. Pokud je však prvek SOAP označen atributem MustUnderstand s hodnotou 1, je vyžadován. Při zpracování elementu došlo k chybě, která vygeneruje tuto výjimku. |
| ClientFaultCode | Volání klienta nebylo správně naformátováno nebo neobsahovalo příslušné informace. Například volání klienta nemusí mít správné ověřovací nebo platební údaje. Obecně se označuje, že zpráva se musí před opětovným odesláním změnit. |
| ServerFaultCode | Při zpracování volání klienta na serveru došlo k chybě, ale příčinou problému není obsah zprávy. Upstreamový server například nemusí reagovat na požadavek kvůli problémům se sítí. S tímto typem výjimky se obvykle může volání klienta později úspěšně provést. Pokud webová služba XML vyvolá výjimku, kromě SoapException a volání klienta pomocí protokolu SOAP, ASP.NET převede výjimku na , SoapExceptionnastavení Code vlastnosti a ServerFaultCode vyvolá ji zpět klientovi. |