Procedura: Gestire le eccezioni generate da un metodo di servizio Web
Viene fornito un esempio di codice di un client che chiama un metodo di servizio Web e rileva un'eccezione SoapException generata dal metodo di servizio Web. In seguito, il client popola una tabella HTML con le proprietà della SoapException intercettata. Per maggiori informazioni sulla gestione di errori SOAP ricevuti dai client di servizio Web, vedere Gestione e generazione di eccezioni nei servizi Web XML.
Esempio
<%@ Import Namespace="System.Web.Services.Protocols" %>
<%@ Import Namespace="System.Xml" %>
<%@ Page Language="vb" %>
<html>
<head>
<script runat=server language=vb>
Sub Page_Load(o As Object, e As EventArgs)
' Create a new instance of the Web service class.
Dim ThrowsSoapException As ThrowSoapException = New _
ThrowSoapException()
Try
ThrowsSoapException.myThrow()
Catch myerr As SoapException
' Populate the table with the exception details.
ErrorTable.Rows.Add(BuildNewRow("Fault Code Namespace", _
myerr.Code.Namespace))
ErrorTable.Rows.Add(BuildNewRow("Fault Code Name", _
myerr.Code.Name))
ErrorTable.Rows.Add(BuildNewRow( _
"SOAP Actor that threw Exception", myerr.Actor))
ErrorTable.Rows.Add(BuildNewRow("Error Message", _
myerr.Message))
ErrorTable.Rows.Add(BuildNewRow("Detail", _
HttpUtility.HtmlEncode(myerr.Detail.OuterXml) ))
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" />
</body>
<%@ Import Namespace="System.Web.Services.Protocols" %>
<%@ Import Namespace="System.Xml" %>
<%@ Page Language="C#" %>
<html>
<head>
<script runat=server language=c#>
void Page_Load(Object o, EventArgs e){
// Create a new instance of the Web service proxy class.
ThrowSoapException throwSoapException = new ThrowSoapException();
// Make a call to the Web service method, which throws an
// exception.
try
{
throwSoapException.myThrow();
}
catch (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));
ErrorTable.Rows.Add(BuildNewRow("Detail",
HttpUtility.HtmlEncode(error.Detail.OuterXml)));
return;
}
}
// This populates a row in an HtmlTable.
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 a cell to the row.
row.Cells.Add(cell1);
cell2.Controls.Add(new LiteralControl(Cell2Text));
//Add a cell to the row.
row.Cells.Add(cell2);
return row;
}
</script>
<head>
<body>
<table id="ErrorTable" CellPadding=5 CellSpacing=0 Border="1" BorderColor="black" />
</body>
Vedere anche
Attività
Procedura: Generare eccezioni da un servizio Web creato utilizzando ASP.NET
Riferimenti
SoapException Class
SoapHeaderException Class
Concetti
Gestione e generazione di eccezioni nei servizi Web XML
Creazione di client dei servizi Web XML
Altre risorse
Handling and Throwing Exceptions
Creare servizi Web XML mediante ASP.NET
Copyright © 2007 Microsoft Corporation. Tutti i diritti riservati.