大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 操作系统 -> Web服务器 -> Web服务中的异常处理(2)

Web服务中的异常处理(2)

时间: 2021-07-31 作者:daque

web效劳的实行为了到达这个示例的手段,咱们创造一个名为categoriesservice的web效劳,采用一个可视化的c#asp.netweb效劳动作项手段模版。一旦创造名目,咱们就增添一个名为addcategories的本领,而且给这个本领增添下列代码:[webmethod]publicbooladdcategories(stringxml){try{using(sqlconnectionconn=newsqlconnection()){if(validatexml(xml)){xmldocumentdoc=newxmldocument();doc.loadxml(xml);conn.connectionstring="server=localhost;uid=sa;pwd=thiru;database=northwind";conn.open();xmlnamespacemanagernsmanager=newxmlnamespacemanager(doc.nametable);//addthenamespacetothenamespacemanagernsmanager.addnamespace("catns","http://tempuri.org/categoriesnamespace");xmlnodecategorynode=doc.documentelement.selectsinglenode("catns:category",nsmanager);stringcategoryname=categorynode.selectsinglenode("catns:categoryname",nsmanager).innertext;stringcategorydescription=categorynode.selectsinglenode("catns:categorydescription",nsmanager).innertext;sqlcommandcommand=newsqlcommand("usp_insertcategories",conn);command.commandtype=commandtype.storedprocedure;//addthecategorynameparametersqlparameterparamcategoryname=newsqlparameter("@categoryname",sqldbtype.nvarchar,15);paramcategoryname.direction=parameterdirection.input;paramcategoryname.value=categoryname;command.parameters.add(paramcategoryname);//addthedescriptionparametersqlparameterparamdescription=newsqlparameter("@description",sqldbtype.text);paramdescription.direction=parameterdirection.input;paramdescription.value=categorydescription;command.parameters.add(paramdescription);command.executenonquery();}elsethrowraiseexception("addcategories","http://tempuri.org/categoriesservice",builder.tostring(),"2000","addcategories",faultcode.client);}returntrue;}catch(soapexceptionsoapex){throwsoapex;}catch(exceptionex){eventlog.writeentry("test",ex.message);throwraiseexception("addcategories","http://tempuri.org/categoriesservice",ex.message,"1000",ex.source,faultcode.server);}}正如其名所提醒的那么,addcategories本领控制把category的精细消息增添到northwind数据库的categories表中。在实行增添操纵之前,addcategories本领运用一个外部的xml形式文献校验被增添的xml数据,即使校验波折,它给web效劳的存户端抛出一个特殊。让咱们来大概欣赏上头的代码吧。开始,把xml数据传播给它,挪用validatexml本领。过一会咱们再来看validatexml本领的代码。validatexml本领归来true或false,这实足在于于xml校验能否胜利。即使归来true,那么就创造一个xmldocument东西范例,并给它导出xml数据,其余还树立connectionstring属性来初始化sqlconnection东西,而后挪用sqlconnection东西的open本领。其次,创造一个xmlnamespacemanager范例,挪用addnamespace本领关系一个定名空间。一旦关系定名空间,咱们就不妨运用定名空间操作符援用精确的xml元素。再次,创造一个sqlparameter东西范例,给保存进程增添参数。结果,挪用sqlcommand东西的executenonquery本领实行保存进程。即使validatexml本领归来false,则用名为raiseexception的帮忙本领抛出soapexception。咱们此刻就来计划raiseexception。raiseexception本领一个基础的帮忙本领,它封装用来从web效劳中抛出特殊的代码。raiseexception本领的结果一个参数是一个列举恒量,它的设置如次。publicenumfaultcode{client=0,server=1}xml校验波折表白存户端供给了失效的xml数据。这种情景,咱们该当把列举恒量设为client,给存户运用步调指出这种缺点。这就使得咱们报告存户端运用步调在再一次挪用web效劳之前须要查看输出数据的方法变成大概。即使web效劳因为少许其余因为(比方,数据库效劳器的不行用)而波折,那么就须要树立列举恒量为server。这就证明web效劳波折是因为效劳器端的少许题目形成的,存户运用步调不妨在几秒钟后从新乞求。究竟上,在catch块中捕获普遍exception,这恰是咱们要做的。 (根源:pconline)

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.