国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

在WebService中利用SoapException處理業務流程執行的錯誤

2024-07-21 02:21:19
字體:
來源:轉載
供稿:網友
在客戶端中調用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 , "數據庫操作產生異常./n"+ex.message));
}
//檢查返回碼
if (iret!=0)
{
throw new soapexception(string.empty, soapexception.clientfaultcode, "service",errorprocess.createsoapexdetail(iret,""));
}

return iret ;
}

生成soapexception的detail的代碼如下:
public static system.xml.xmlnode createsoapexdetail(int excode,string strmessage)
{
xmldocument doc = new system.xml.xmldocument();
xmlnode node = doc.createnode(xmlnodetype.element,
soapexception.detailelementname.name,
soapexception.detailelementname.namespace);


// 增加錯誤碼
system.xml.xmlnode nodecode = doc.createnode(xmlnodetype.element,"excode","excode");
nodecode.innertext = excode.tostring() ;

// 增加錯誤消息
system.xml.xmlnode nodemessage = doc.createnode(xmlnodetype.element,"exmessage", "exmessage");
if(strmessage.trim()=="")
{
nodemessage.innertext = geterrormessage(excode) ;//根據從數據庫中取相應的錯誤消息
}
else
{
nodemessage.innertext = strmessage ;
}

// append the two child elements to the detail node.
node.appendchild(nodecode);
node.appendchild(nodemessage);
return node ;
}

客戶端補獲soapexception后處理方法如下:
catch (soapexception soapex)
{
iret = convert.toint32(soapex.detail["excode"].innertext) ;
messagebox.show(soapex.detail["exmessage"].innertext, "服務端錯誤", messageboxbuttons.ok, messageboxicon.error);

}





收集最實用的網頁特效代碼!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 汕头市| 乐平市| 宿松县| 上杭县| 中江县| 白朗县| 含山县| 额敏县| 东海县| 宁明县| 桓仁| 屏南县| 沙洋县| 德令哈市| 托克逊县| 岚皋县| 凤翔县| 大荔县| 襄汾县| 留坝县| 武穴市| 安顺市| 巴林左旗| 肥东县| 咸宁市| 东乡族自治县| 延吉市| 莆田市| 囊谦县| 南充市| 南澳县| 正定县| 石家庄市| 肥城市| 泰宁县| 商洛市| 海晏县| 洛川县| 象州县| 平阴县| 凌云县|