我目前正处于创建MVC site
的项目中。由于需要插入第三方dll以提供自定义功能,因此该站点需要使用代码访问安全性。现在我们不希望这些程序集完全信任,因此在.NET 4.0
由于这些要求,我们正在强制命名所有自己的程序集,并将它们安装在gac中。其中一些程序集是与SecuritySafeCritical和SecurityCritical类型和成员混合的SecurityTransparent。
第三方程序集开发人员可以按照我们的意图使用securityTransparent和SecurityCritical程序集,类型和成员。
我现在遇到Global.asax
文件的问题,该文件继承自驻留在标有AllowPartiallyTrustedCallers
属性的程序集中的类。
此类继承自HttpApplication
。
在我的web.config
中,trustlevel当前设置为High。
我收到以下错误:
类型违反的继承安全规则:'ASP.global_asax'。 派生类型必须与基础的安全可访问性匹配 键入或不太容易访问
我想这是因为使用安全模型时的继承规则,HttpApplication
类必须具有比SecurityTransparent更严格的规则。
我尝试使用SecuritySafeCritical
属性标记我的自定义类,但没有运气。
我希望你们中的一些人能解决这个问题。
答案 0 :(得分:1)
如果您正在尝试保护对HttpApplication
子类型的访问权限,我建议将其抽象为一个您知道安全的自定义界面,并允许第三方开发人员访问它而不是尝试将安全性引导到现有的.NET类型。