ASP.NET的XMLWeb服务方法

ASP.NET支持XML Web服务方法的事务利用公共语言运行期中的支持,其是基于Microsoft Transaction Server ( MTS)和COM+ Services中相同的分布式事务模型。该模型基于明确的判断一个对象是否参与一个事务,而不是编写特定的代码用来处理委托和回调一个事务。对于一个使用ASP.NET创建的XML Web服务,你可以通过设置其应用到一个XML Web服务方法上的WebMethod属性的TransactionOption属性来声明一个XML Web服务的事务行为。如果该XML Web服务方法执行的时候抛出一个异常,那么该事务自动地结束;相反,如果没有发生异常,该事务自动委托。

成都创新互联从2013年成立,先为雨花台等服务建站,雨花台等地企业,进行企业商务咨询服务。为雨花台企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

WebMethod属性的TransactionOption属性规定一个XML Web服务方法如何参与一个事务。虽然这个声明级别表示一个事务逻辑,但是它是消除实际事务的一个步骤。当事物对象访问数据源(如数据库或消息队列)时实际事务产生。关联该对象的事务自动流向适当的资源管理程序。像.NET Framework Data Provider(用于SQL Server或OLE DB)这样的.NET Framework数据提供者在对象的上下文中查找事务并通过Distributed Transaction Coordinator (DTC,分布式事务协调程序)编目事务。全部的事务自动产生。

XML Web服务方法只能参与一个作为新事务的根的事务。作为一个新事务的根,所有的与资源管理器(像运行Microsoft SQL Server、Microsoft Message Queuing和Microsoft Host Integration Server的服务器)的相互作用维护需要运行健壮的分布式应用程序的ACID性质。调用其他的XML Web服务方法的XML Web服务方法参与不同的事务,因为事务不流经XML Web服务方法。

ASP.NET使用来自XML Web服务方法的事务
声明一个XML Web服务。

 
 
 
  1. <%@WebServiceLanguage="C#"Class="Orders"%> 
  2. <%@Assemblyname="System.EnterpriseServices,Version=1.0.3300.0,
    Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a"
    %> 
  3. usingSystem;  
  4. usingSystem.Data;  
  5. usingSystem.Data.SqlClient;  
  6. usingSystem.Web.Services;  
  7. usingSystem.EnterpriseServices;  
  8.  
  9. publicclassOrders:WebService  
  10. {  
  11. [WebMethod(TransactionOptionTransactionOption=TransactionOption.RequiresNew)]  
  12. publicintDeleteAuthor(stringlastName)  
  13. {  
  14. StringdeleteCmd="DELETEFROMauthorsWHEREau_lname='"+  
  15. lastName+"'";  
  16. StringexceptionCausingCmdSQL="DELETEFROMNonExistingTableWHERE  
  17. au_lname='"+lastName+"'";  
  18.  
  19. SqlConnectionsqlConn=newSqlConnection(  
  20. "PersistSecurityInfo=False;IntegratedSecurity=SSPI;database=pubs;server=myserver");  
  21.  
  22. SqlCommanddeleteCmd=newSqlCommand(deleteCmdSQL,sqlConn);  
  23. SqlCommandexceptionCausingCmd=new 
  24. SqlCommand(exceptionCausingCmdSQL,sqlConn);  
  25.  
  26. //Thiscommandshouldexecuteproperly.  
  27. deleteCmd.Connection.Open();  
  28. deleteCmd.ExecuteNonQuery();  
  29.  
  30. //Thiscommandresultsinanexception,sothefirstcommandis  
  31. //automaticallyrolledback.SincetheXMLWebservicemethodis  
  32. //participatinginatransaction,andanexceptionoccurs,ASP.NET  
  33. //automaticallyabortsthetransaction.ThedeleteCmdthat  
  34. //executedproperlyisrolledback.  
  35.  
  36. intcmdResult=exceptionCausingCmd.ExecuteNonQuery();  
  37.  
  38. sqlConn.Close();  
  39.  
  40. returncmdResult;  
  41. }  
  42. }  
  43. [VisualBasic]  
  44. <%@WebServiceLanguage="VB"Class="Orders"%> 
  45. <%@assemblyname="System.EnterpriseServices"%> 
  46.  
  47. ImportsSystem  
  48. ImportsSystem.Data  
  49. ImportsSystem.Data.SqlClient  
  50. ImportsSystem.Web.Services  
  51. ImportsSystem.Web.Util  
  52. ImportsSystem.EnterpriseServices  
  53.  
  54. PublicClassOrders  
  55.  
  56. (TransactionOptionTransactionOption:=TransactionOption.RequiresNew)>_  
  57. PublicFunctionDeleteAuthor(lastNameasString)asInteger  
  58.  
  59. DimdeleteCmdSQLAsString="DELETEFROMauthorsWHEREau_lname='"+_  
  60. lastName+"'"  
  61. DimexceptionCausingCmdSQLAsString="DELETEFROM"+_  
  62. "NonExistingTableWHEREau_lname='"+lastName+"'"  
  63.  
  64. DimsqlConnAsSqlConnection=NewSqlConnection(_  
  65. "PersistSecurityInfo=False;IntegratedSecurity=SSPI;database=pubs;server=myserver")  
  66.  
  67. DimdeleteCmdAsSqlCommand=NewSqlCommand(deleteCmdSQL,sqlConn)  
  68. DimexceptionCausingCmdAsSqlCommand=New_ 
  69. SqlCommand(exceptionCausingCmdSQL,sqlConn)  
  70.  
  71. 'Thiscommandshouldexecuteproperly.  
  72. deleteCmd.Connection.Open()  
  73. deleteCmd.ExecuteNonQuery()  
  74.  
  75. 'Thiscommandresultsinanexception,sothefirstcommandis  
  76. 'automaticallyrolledback.SincetheXMLWebservicemethodis  
  77. 'participatinginatransaction,andanexceptionoccurs,ASP.NET  
  78. 'automaticallyabortsthetransaction.ThedeleteCmdthat  
  79. 'executedproperlyisrolledback.  
  80.  
  81. DimcmdResultAsInteger=exceptionCausingCmd.ExecuteNonQuery()  
  82. sqlConn.Close()  
  83.  
  84. ReturncmdResult  
  85. EndFunction  
  86. EndClass 

【编辑推荐】

  1. ASP.NET页面显示XML数据
  2. 了解什么是IFRAME ASP.NET
  3. ASP.NET生命周期的展示
  4. 解决ASP.NET AJAX脚本的错误问题
  5. 详解ASP.NET应用程序

当前文章:ASP.NET的XMLWeb服务方法
文章URL:http://www.shufengxianlan.com/qtweb/news0/288650.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联