如何为程序集添加完全信任?

问题描述:

我想为我的程序集为特定的.NET信任级别设置完全信任(此程序集将在SharePoint中的某些Web应用程序中运行)。我知道这是可能的使用CasPol.exe,但我想这样做只使用API​​,而不是与另一个可执行文件。如何为程序集添加完全信任?

更多细节:

  • 在IIS →的网站,我有 “的MySite”。
  • 在“mysite的” → ASP.NET → .NET信任级别→所选的信任级别为“WSS_Minimal”(和路径的配置文件)

如果我编辑这样的XML配置文件:

<CodeGroup class="UnionCodeGroup" version="1" PermissionSetName="FullTrust"> 
    IMembershipCondition class="UrlMembershipCondition" version="1" 
    Url="C:\PathToMyAssembly\MyAssembly.dll" /> 
</CodeGroup> 

然后回收应用程序池,我可以看到,当在使用了“WSS_Minimal”信任级别的Web应用程序我的DLL加载,我的组装得到充分的信任。

如何仅使用C#API重复此方法?

主要有3个项目 -

  1. 授予完全信任我的组装到一个特定的预定义的信任级别。
  2. 检查是否“我已经这样做了” - 意思是,它是否已被授予。
  3. 删除此(例如,卸载我的产品时)

好像使用这个API是正确的地方,但是当我列举的政策,我从来没有我一直在寻找的XML -

var levelEnumerator = SecurityManager.PolicyHierarchy(); 
while (levelEnumerator.MoveNext()) 
{ 
} 

+0

谢谢!我没有提到这是SharePoint 2010及更高版本所必需的,因此_FullTrustAssembliesSection_无关紧要。但是,_SPWebConfigModification_是我的答案。谢谢!! – Elad 2014-10-05 07:50:06

我会建议坚持使用caspol.exe。并非所有由该工具提供的功能都在.NET框架中公开,因此如果您想自动执行,则最好的选择是通过C#代码或PowerShell调用caspol.exe。

如果是您正在开发的自定义DLL,您可以创建BAT文件或PowerShell文件以将文件复制到所需的位置,请运行caspol.exe授予对程序集的完全信任。您也可以通过使用-resolveperm标志调用CasPol并解析输出来检查程序集是否已经具有正确的安全性。然后可以将此脚本作为Visual Studio中的Post Build命令进行调用,以进一步自动化该过程。