0

我正在尝试为特定的 .NET 信任级别为我的程序集设置完全信任(此程序集将在 SharePoint 的某些 Web 应用程序中运行)。我知道使用 CasPol.exe 可以做到这一点,但我想仅使用 API 而不是使用其他可执行文件来做到这一点。

更多细节:

  • 在 IIS → 站点下,我有“MySite”。
  • 在“MySite”→ ASP.NET → .NET Trust Levels → 选择的信任级别是“WSS_Minimal”(以及配置文件的路径)

如果我像这样编辑 xml 配置文件:

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

然后回收应用程序池,我可以看到当我的 dll 加载到使用“WSS_Minimal”信任级别的 Web 应用程序中时,我的程序集得到了完全信任。

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

有3个主要项目-

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

似乎使用这个 API 是正确的地方,但是当我枚举策略时,我从来没有找到我正在寻找的 xml -

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

2 回答 2

0

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

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

于 2014-09-11T12:19:46.523 回答
0

您可以尝试通过SPWebConfigModification类修改 web.config。并设置fullTrustAssemblies部分:

http://msdn.microsoft.com/en-us/library/Microsoft.SharePoint.Administration.SPWebConfigModification(v=office.15).aspx

http://msdn.microsoft.com/en-us/library/vstudio/system.web.configuration.fulltrustassembliessection(v=vs.100).aspx

于 2014-09-11T13:29:39.437 回答