快速业务通道

Enterprise Library 2.0 Hands On Lab 翻译(8):异常应用程序块(二)

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-21

练习2:异常处理策略

通过本练习将学会使用异常处理应用程序块的包装策略,来处理一些带有敏感信息的异常。

第一步

打开Puzzler2.sln 项目,默认的安装路径应该为C:\Program Files\Microsoft Enterprise Library January 2006\labs\cs\Exception Handling\exercises\ex02,并编译。

第二步 保护服务中''Add Word''函数的代码访问安全

1.在解决方案管理器选择项目PuzzlerService中的Dictionary.cs文件,选择View | Code菜单命令,为方法Add Word加上代码访问安全特性。

// TODO: Add security attribute
[PrincipalPermission(SecurityAction.Demand, Role = "Grand PoohBah")]
public static Boolean AddWord(string wordToAdd)
{
  if (!IsWord(wordToAdd))
  {
    // It is not alphabetic! Throw an exception
    throw new ApplicationException(
      "Word to add does not consist of alphabetic letters");
  }
  if (Dict[wordToAdd] == null)
  {
    Dict.Add(wordToAdd, wordToAdd);
  }
  return true;
}

现在该方法只可以被角色Grand PoohBah所执行。注意要修改的方法在Dictionary.cs中而不是DictionaryService.cs。

2.选择Debug | Start Without Debugging菜单命令运行应用程序。在Word to check文本框中输入数字并单击Add Word按钮。这将会引发服务的AddWord方法抛出一个SecurityException异常信息,在事件查看器中可以看到。

Enterprise Library 2.0 Hands On Lab 翻译(8):异常应用程序块(二)

这里SecurityException信息从服务端传到了客户端,其中包含的信息将会有助于攻击者来攻破我们的系统安全。所以应该是在服务端记录异常信息,而只发送很少的信息到客户端。

3.关闭应用程序。

第三步 配置应用程序包装SecurityExceptions

1.在解决方案管理器中选中App.config文件,在View菜单或者在右键菜单中选择Open With…,将打开OpenWith对话框,选中Enterprise Library Configuration并单击OK按钮。

App.config已经包含了一个空的策略Service Policy,默认的,如果一个策略是空的,异常信息将会从Catch块中重新抛出,事实上该策略并没有做任何事情。

2.选中Service Policy节点,选择Action | New | Exception Type菜单命令。在弹出的对话框中选择System.Security.SecurityException,并单击OK按钮。

Enterprise Library 2.0 Hands On Lab 翻译(8):异常应用程序块(二)

3.选中Service Policy | SecurityException节点,并设置如下属性。

PostHandlingAction = ThrowNewException

Enterprise Library 2.0 Hands On Lab 翻译(8):异常应用程序块(二)

4.添加新的Logging Handler,选中Service Policy | SecurityException节点,并选择Action | New | Logging Handler菜单命令,设置如下属性。

FormatterType = TextExceptionFormatter,

LogCategory = General

Title = Security Exception in Service Layer

Enterprise Library 2.0 Hands On Lab 翻译(8):异常应用程序块(二)

5.添加新的Replace Handler,选中Service Policy | SecurityException节点,选择Action | New | Replace Handler菜单命令,并设置如下属性。

ExceptionMessage = Unauthorized Access

ReplaceExceptionType = System.Security.SecurityException (from mscorlib)

Enterprise Library 2.0 Hands On Lab 翻译(8):异常应用程序块(二)

第四步 发生安全异常时退出应用程序

1.选中UI Policy节点,选择Action | New | Exception Type菜单命令,选择System.Security.SecurityException类型并单击OK按钮,设置如下属性。

PostHandlingAction = NotifyRethrow

Enterprise Library 2.0 Hands On Lab 翻译(8):异常应用程序块(二)

处理行为NotifyRethrow将引发Application.ThreadException重新抛出异常,重新抛出的异常将会为一个未处理异常unhandled exception。

2.为SecurityException在UI Policy策略下面添加新的Logging Handler,选择Action | New | Logging Handler菜单命令,设置如下属性。

FormatterType = TextExceptionFormatter,

LogCategory = General

Title = Securi

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号