Sql server 禁用在SQLCLR上运行的键入代码
最近,我设法让Razor解析器在.NET3.5下工作,并由SQLServer2008托管。目前,这只是一个实验,看看什么是可行的。这是可行的,包括动态编译razor模板程序集,然后将其加载到AppDomain中 因为SQLCLR不允许您在任何SQLCLR托管的代码中使用Assembly.Load,即使权限设置为不安全。我的解决方法是在编译后直接使用sp_executesql注册程序集,我构建了createassembly语句。当我动态呈现这些模板程序集时,我使用权限_SET=SAFE来确保它们不会做任何超出安全程序集允许范围的事情 现在棘手的部分是,这些razor模板在连接用户的上下文中运行,因此它们可以访问数据库,例如,在我的模板中,我可以执行以下操作: PERMISSION_SET=SAFE允许这样做,因为这是SQLCLR存在的原因之一,但在这些模板程序集中,我想引入一些额外的安全性,允许我防止用户对数据库执行任何操作 有人知道使用代码访问安全性或其他方法禁用类型(如SqlConnection或SqlCommand)的方法吗?SqlClientPermission可用于防止使用SqlConnection。SqlClientPermission可用于防止使用SqlConnectionSql server 禁用在SQLCLR上运行的键入代码,sql-server,razor,sqlclr,code-access-security,Sql Server,Razor,Sqlclr,Code Access Security,最近,我设法让Razor解析器在.NET3.5下工作,并由SQLServer2008托管。目前,这只是一个实验,看看什么是可行的。这是可行的,包括动态编译razor模板程序集,然后将其加载到AppDomain中 因为SQLCLR不允许您在任何SQLCLR托管的代码中使用Assembly.Load,即使权限设置为不安全。我的解决方法是在编译后直接使用sp_executesql注册程序集,我构建了createassembly语句。当我动态呈现这些模板程序集时,我使用权限_SET=SAFE来确保它们不
@import System.Data.SqlClient
@{
using (var conn = new SqlConnection("Context Connection = true"))
{
conn.Open();
// Execute something against the database
}
}