我想了解更多有关C#中HostProtectionAttribute的信息。当然,我阅读了MSDN文档this和this,但我无法弄清楚我们使用它的原因。在文档中有一些术语,如"主机编程模型"这使得这个话题让我更加困惑。
假设我们有一个具有此属性的方法,如果删除它会发生什么?
答案 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)中出现不可预测的行为。我希望这会使它更有帮助。