Asp.Net事务和异常处理

添加人:yeemio零级(113分)   添加时间:2007-08-29    阅读次数:3644  收藏此教程
然后给程序添加强名(strong name)
1:创建一对密钥
使用sn.exe这个工具
sn –k SnEnterprise.snk
其中SnEnterprise.snk 代表将保存密钥的文件的名称。它的名称可以是任意的,不过习惯上带有.snk后缀名。
2:签名
签名通常是在编译时进行的。签名时,用户可利用C#属性通知编译器应该使用正确的密钥文件对DLL进行签名。要做到这一点用户需要打开工程中的AssemblyInfo.cs文件并进行修改。
 [assembly: ComVisible(true)] 这里的true默认是false需要改,要不不成我就卡到这上一个晚上。
[assembly:AssemblyKeyFile(“..\\..\\SnEnterprise.snk”)]
注:SnEnterprise.snk文件和项目文件在同一个文件夹
注:SnEnterprise.snk文件和项目文件在同一个文件夹
3:编译成DLL
4:使用regsvcs.exe将Dll注册到COM+ Services里面,我的是这样

C:\web study\WebApplication1\WebApplication1\prjEnterprise\bin\Debug>regsvcs prjEnterprise.dll
Microsoft(R) .NET Framework 服务安装实用工具版本 2.0.50727.42
Copyright (c) Microsoft Corporation.  All rights reserved.

警告: 程序集未声明 ApplicationAccessControl 属性。默认情况下启用应用程序安全性。

已安装的程序集:
        程序集: C:\web study\WebApplication1\WebApplication1\prjEnterprise\bin\D
ebug\prjEnterprise.dll
        应用程序: prjEnterprise
        TypeLib: C:\web study\WebApplication1\WebApplication1\prjEnterprise\bin\
Debug\prjEnterprise.tlb

然后在WebApplication1理添加引用。然后添加测试页面

<form id="_03ComPlusAction" method="post" runat="server">
   <asp:Button id="btnCommit1" style="Z-INDEX: 101; LEFT: 240px; POSITION: absolute; TOP: 102px" runat="server" Text="调用1" OnClick="btnCommit1_Click"></asp:Button>
   <asp:Button id="btnCommit2" style="Z-INDEX: 102; LEFT: 241px; POSITION: absolute; TOP: 164px" runat="server" Text="调用2" OnClick="btnCommit2_Click"></asp:Button>
  </form>
后台编程:
 1using System;
 2using System.Data;
 3using System.Configuration;
 4using System.Collections;
 5using System.Web;
 6using System.Web.Security;
 7using System.Web.UI;
 8using System.Web.UI.WebControls;
 9using System.Web.UI.WebControls.WebParts;
10using System.Web.UI.HtmlControls;
11
12namespace WebApplication1
13{
14    public partial class ComAcction : System.Web.UI.Page
15    {
16        protected void Page_Load(object sender, EventArgs e)
17        {
18
19        }

20
21        protected void btnCommit1_Click(object sender, EventArgs e)
22        {
23            prjEnterprise.clsES myTest = new prjEnterprise.clsES();
24            try
25            {
26                myTest.dbAccess(1, 300);
27                Response.Write("事务成功!");
28            }

29            catch (Exception)
30            {
31                Response.Write("事务失败!");
32            }

33
34        }

35
36        protected void btnCommit2_Click(object sender, EventArgs e)
37        {
38            prjEnterprise.clsES myTest = new prjEnterprise.clsES();
39
40            try
41            {
42                myTest.dbAccess(1,1000000000);
43                Response.Write("事务成功!");
44            }

45            catch (Exception)
46            {
47                Response.Write("事务失败!");
48            }

49        }

50    }

51}
 

什么是异常处理
• 异常是正在执行的程序所遇到的任何错误情形或者意外行为。
• 很多原因都可以引起异常,例如,代码中错误、操作系统资源不可用、公共语言运行时(common language runtime)中的意外情况等等。
• 然而应用程序能够从上述的一些情况中恢复执行,但是大多数运行时异常是不可恢复的。在这种情况下,需要一种有效的方法来处理这些异常并给调用者提供相同的异常。
用结构化的异常处理方法来处理异常
• 在.NET Web服务中,对异常处理支持的关键点是由try...catch..finally语句提供的。
• 关键字try放在可能抛出异常的普通处理代码块之前。
• 关键字catch放在异常处理代码块之前。
• 关键字finally放在那些经常在异常处理后还需要执行的代码块之前。
• 一旦异常从try代码块中抛出,程序流切换到后面的第一个catch代码块
异常类
• Exception 所有异常对象的基类
• SystemException 运行时产生的所有错误的基类
• IndexOutOfRangeException 当一个数组的下标超出范围时运行时引发
• NullReferenceException 当一个空对象被引用时运行时引发
• InvalidOperationException 当对方法的调用对对象的当前状态无效时,由某些方法引发
• ArgumentException 所有参数异常的基类
• ArgumentNullException 在参数为空(不允许)的情况下,由方法引发
• ArgumentOutOfRangeException 当参数不在一个给定范围之内时,由方法引发
• InteropException 目标在或发生在CLR外面环境中的异常的基类
• ComException 包含COM 类的HRESULT信息的异常
• SEHException 封装win32 结构异常处理信息的异常
优化异常
• 理解异常是一定会发生的
– 大多数的软件系统都不是百分之百可靠的!
– 要站在异常一定可能会发生的角度来编写异常
处理程序,应对程序有可能发生的错误。
– 建立一个良好的异常处理策略
• 处理未预料的异常
– 确保所有程序的入口都使用了try-catch
– 在catch中截获所有的异常
异常处理注意事项
• 当引发异常时,要提供有意义的文本。
• 要引发异常仅当条件是真正异常;也就是当一个正常的返回值不满足时。
• 如果你的方法或属性被传递一个坏参数,要引发一个ArgumentException异常。
• 当调用操作不适合对象的当前状态时,要引发一个InvalidOperationException异常。
• 要引发最适合的异常。
• 要使用链接异常,它们允许你跟踪异常树。
• 不要为正常或预期的错误使用异常。
• 不要为流程的正常控制使用异常。
• 不要在方法中引发NullReferenceException或IndexOutOfRangeException异常。
异常处理技术
• 记录异常
– 在文件中记录异常
– 在数据库中记录异常
– 在eventlog中记录异常
• 发送email通知异常
• 异常产生时,用友好(user-friendly)的方式通知用户
处理错误
• Page_Error事件
• Application_Error事件
• 利用配置文件,自定义错误页面
– <customErrors defaultRedirect="url" mo
de="RemoteOnly">
<error statusCode="code" redirect="url
"></error>
</customErrors>

异常的例子我就不说了,大家知道的一定比我多,网上也可以搜到很多相关的例子来。

3页 第3上一页123下一页
相关的教程: ASP.NET
收藏此教程

当前平均分: 0.0(0 次打分)

-5-4-3-2-1012345
评论主题
您的大名
您的评论
验证码 点击换一个验证码
知识库搜索: