【发布时间】:2016-12-28 07:13:10
【问题描述】:
我想详细了解 C# 中的 HostProtectionAttribute。当然,我阅读了 MSDN 文档 this 和 this,但我不知道我们为什么要使用它。在文档中,诸如“主机编程模型”之类的术语让我更加困惑。
假设我们有一个方法有这个属性,如果我删除它会发生什么?
【问题讨论】:
我想详细了解 C# 中的 HostProtectionAttribute。当然,我阅读了 MSDN 文档 this 和 this,但我不知道我们为什么要使用它。在文档中,诸如“主机编程模型”之类的术语让我更加困惑。
假设我们有一个方法有这个属性,如果我删除它会发生什么?
【问题讨论】:
如下文所述;
鉴于这些属性,SQL Server 指定了一个HPA 列表,它们是 在托管环境中不允许通过代码访问安全性 (CAS)。 CAS 要求由三个 SQL Server 之一指定 权限集:SAFE、EXTERNAL_ACCESS 或 UNSAFE。这三个之一 安全级别是在程序集注册时指定的 服务器,使用 CREATE ASSEMBLY 语句。内执行的代码 SAFE 或 EXTERNAL_ACCESS 权限集必须避免某些 类型或 成员拥有 System.Security.Permissions.HostProtectionAttribute 属性已应用。
HostProtectionAttribute 不像 那样是安全权限,因为 **它标识特定代码 构造,类型或方法,主机可能不允许
I couldn't figure out why we use it.
我们使用它来帮助我们在宿主环境中编写可预测的代码,因为
它标识主机可能不允许的特定代码结构(类型或方法)
Suppose that we have a method that has this attribute and what happens if I delete it?
当您删除它时,如果该方法包含主机可能不允许的类型或某些代码结构,您将永远不会知道,因此它可能导致您的代码在主机环境(例如 SQL 服务器)中出现不可预知的行为.我希望这会有所帮助。
【讨论】: