飘遥的Blog

C/C++/.NET
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

程序异常,trust level 惹的祸?

Posted on 2007-11-30 23:50  Zzx飘遥  阅读(2485)  评论(0编辑  收藏  举报

  程序开发过程中,一直调试运行正常,但当配置 CodeHighlighter 组件后就运行出错,错误如下图:



第一感觉就是 access 数据库权限问题,设置数据库权限无效,设置整个 web 拥有最大权限也是无效。考虑肯定是 CodeHighlighter 组件的原因,但查官方网站,发现该组件运行环境的 trust level 是 "Medium" 级别的,并在 Web.config 中设置了 <trust level="Medium" originUrl=""/> 肯定不会是他的原因啊。Google 了一番发现 trust level 的意义。MSDN 描述如下:

<trust
level="[Full|High|Medium|Low|Minimal]"
originUrl
="URL"
processRequestInApplicationTrust
= "[True|False]"
/>


level:必选的 String 属性。

指定将运行应用程序的信任级别。每个信任级别使用配置文件中的 trustLevel 元素映射到单个 XML 策略文件。该策略文件列出由每个信任级别授予的权限集。有关 ASP.NET 和策略文件的信息,请参见 ASP.NET 信任级别和策略文件。

如果 securityPolicy 元素(ASP.NET 设置架构)元素的 trustLevel 元素中定义了匹配的安全策略映射,则此属性可以是用户定义的值。此属性还可以是下列可能值之一,这些值按限制程度的递增顺序排列。

Full:指定无限制的权限。授予 ASP.NET 应用程序访问任何资源的权限(受操作系统安全性的限制)。支持所有被授予特权的操作。该设置在 AspNetHostingPermissionLevel 枚举中称为 Unrestricted。默认值是 Full(无限制)。

High:指定高级别的代码访问安全性,这意味着应用程序不能执行下列任何操作。
  • 调用非托管代码。

  • 调用服务组件。

  • 写入事件日志。

  • 访问 Microsoft“消息队列”队列。

  • 访问 ODBC、OleDb 或 Oracle 数据源。

Medium:指定中等级别的代码访问安全性,这意味着除了 High 限制外,ASP.NET 应用程序还不能执行下列任何操作。
  • 访问应用程序目录以外的文件。

  • 访问注册表。


Low:指定低级别的代码访问安全性,这意味着除了 Medium 限制之外,应用程序还不能执行下列任何操作。
  • 写入文件系统。

  • 调用 Assert 方法来扩展对资源的权限。

Minimal:指定最低级别的代码访问安全性,这意味着应用程序只有执行权限。
originUrl:可选的 String 属性。指定一个用于在高和中等信任级别中授予的 WebPermission 权限的 URL。如果存在,则此属性可用于只允许连接到 WebPermission 所指定的特定 URL 的某些权限(如 WebRequest)。这允许依赖于宿主概念的权限正常工作。

processRequestInApplicationTrust:可选的 Boolean 属性。
指定页请求是否自动限制为在应用于 ASP.NET 应用程序的信任策略文件中配置的权限。
信任策略文件在 securityPolicy 元素的 trustLevel 元素中指定。单个信任策略通过使用 trust 元素的 level 属性应用于 ASP.NET 应用程序。
如果设置为 False,则即使 level 属性指定了不同的信任级别,ASP.NET 请求也可能可以在 Full 信任级别下执行。除非有特定的原因需要这样做,否则不要重置默认值为 true 的此属性。
此属性是 .NET Framework 2.0 版中的新属性。
默认值为 True。