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

6
我想更多地了解 C# 中的 HostProtectionAttribute。当然,我阅读了 MSDN 文档这个这个,但我无法弄清楚为什么我们要使用它。在文档中有诸如“主机编程模型”之类的术语,这让这个主题对我来说更加混乱。
假设我们有一个带有这个属性的方法,如果我删除它会发生什么?
1个回答

2
正如下面的文档所述:
基于这些属性,SQL Server指定了在托管环境中不允许使用的HPAs列表,通过代码访问安全性(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服务器)中出现不可预测的行为。希望这能对您有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接