【问题标题】:InitializeLifetimeService overriding patternInitializeLifetimeService 覆盖模式
【发布时间】:2011-11-03 10:56:06
【问题描述】:

我正在开发一个可以使用从外部程序集加载的模块的应用程序。这些模块的唯一限制是从 Module 类继承,以便主机调用它们。

这个 Module 类会覆盖 InitializeLifetimeService 以使模块的透明代理不会超时。

现在这是我的问题:在 .Net 4.0 的代码安全性中,不允许部分信任程序集覆盖来自安全代码(InitializeLifetimeService 是)的方法。由于我的模式看起来很常见,我不明白应用托管模块应该如何与它们通信。

谢谢。

【问题讨论】:

    标签: c# .net .net-4.0


    【解决方案1】:

    也许这个链接可以帮助你: http://msdn.microsoft.com/en-us/library/dd233102.aspx#inheritance

    我的猜测是,包含您继承的类的模块可能需要使用新的安全属性进行更新。不幸的是,听起来您使用的模块不是您编写的,因此您可能需要与模块的作者或公司交谈。

    来自 MSDN “在基类或接口中引入并在安全关键类中重写或实现的虚拟和抽象方法默认情况下是透明的。它们必须标识为 SecuritySafeCritical 或 SecurityCritical。”

    【讨论】:

    • 我了解 L2 安全性的继承规则,但是当我提到覆盖 InitializeLifetimeService 时,我指的是 MarshalByRef 类的方法,它是 .Net 框架的一部分。跨度>
    猜你喜欢
    • 2019-12-18
    • 2011-04-27
    • 2016-05-27
    • 2020-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-31
    • 1970-01-01
    相关资源
    最近更新 更多