国产探花免费观看_亚洲丰满少妇自慰呻吟_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);

}





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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 万荣县| 吉隆县| 明光市| 肃宁县| 靖州| 抚远县| 隆尧县| 微博| 兴仁县| 将乐县| 保亭| 巴林右旗| 庆云县| 南康市| 霍林郭勒市| 德兴市| 东莞市| 莆田市| 抚州市| 离岛区| 内黄县| 乌审旗| 富民县| 新民市| 瑞安市| 上林县| 佛坪县| 章丘市| 卫辉市| 东宁县| 新巴尔虎右旗| 南安市| 连城县| 隆化县| 横山县| 舒兰市| 牙克石市| 大余县| 广水市| 兴海县| 白玉县|