本主題專門說明舊有技術。 應該使用下列建立 XML Web Service 及 XML Web Service 用戶端: Windows Communication Foundation.
下列程式碼範例是一個呼叫 Web 服務方法的用戶端,它會攔截 Web 服務方法擲回的 SoapException。這個用戶端會接著將攔截到的 SoapException 的屬性填入 HTML 表格。如需處理 Web 服務用戶端收到之 SOAP 錯誤的詳細資訊,請參閱<在 XML Web Service 中處理和擲回例外狀況>。
範例
<%@ 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" runat="server" />
</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" runat="server" />
</body>
另請參閱
工作
HOW TO:從使用 ASP.NET 建立的 Web 服務擲回例外狀況
參考
SoapException Class
SoapHeaderException Class
概念
在 XML Web Service 中處理和擲回例外狀況
建置 XML Web Service 用戶端
其他資源
Handling and Throwing Exceptions
使用 ASP.NET 的 XML Web Service