在WebService中利用SoapException處理商務程序執行的錯誤-Web_Service
來源:互聯網
上載者:User
在用戶端中調用WebService的方法處理商務程序,如果業務處理常式返回錯誤,一般我們可以利用返回錯誤碼的方式將處理結果返回給客戶段,客戶段針對不同的錯誤碼進行相應的錯誤處理,按照這種處理流程有時候用戶端可能需要很多重複的代碼來響應不同的錯誤碼,一個簡單的例子就是,對於不同的錯誤碼,顯示不同的錯誤訊息,有些系統中,業務處理的錯誤訊息可能是放在業務資料庫中的,在這種情況下,客戶段要顯示錯誤訊息,還必須要調用相應的Service擷取錯誤訊息。
WebService利用SoapException的Detail提供了給用戶端返回更詳細錯誤資訊、或業務相關資訊的能力,例如在一個認證的例子中可以利用下面代碼給客戶段返回異常,並告知客戶錯誤碼和錯誤訊息,以及其他相關資訊
private static int Authenticate( CredentialSoapHeader header)
{
int iRet ;
try
{
SqlConnection conn = new SqlConnection(CommonDB.ConnectionString);
SqlCommand cmd = new SqlCommand("P_Employee_Check", conn);
cmd.Parameters.Add("@EmployeeCode", header.Username);
cmd.Parameters.Add("@EmployeePassword", header.Password);
cmd.Parameters.Add("@ReturnValue",-1) ;
cmd.Parameters["@ReturnValue"].Direction = ParameterDirection.ReturnValue ;
cmd.CommandType = CommandType.StoredProcedure;
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
iRet = Convert.ToInt32(cmd.Parameters["@ReturnValue"].Value) ;
}
catch (Exception ex)
{
iRet = 1000 ;
throw new SoapException(string.Empty, SoapException.ServerFaultCode, "Service",ErrorMessage.CreateSoapExDetail(iRet , "資料庫操作產生異常."+ex.Message));