什么是HostProtectionAttribute以及我们为什么要使用它?

时间:2016-12-28 07:13:10

标签: c# clr msdn

我想了解更多有关C#中H​​ostProtectionAttribute的信息。当然,我阅读了MSDN文档thisthis,但我无法弄清楚我们使用它的原因。在文档中有一些术语,如"主机编程模型"这使得这个话题让我更加困惑。

假设我们有一个具有此属性的方法,如果删除它会发生什么?

1 个答案:

答案 0 :(得分:2)

正如文件中所述;

  

鉴于这些属性,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 Server)中出现不可预测的行为。我希望这会使它更有帮助。