虽然@Michael Liu 的回答是正确的,但对于在这方面工作知识有限的新手(比如我自己)来说并不容易理解。该答案旨在补充迈克尔的答案。
当您的 web.config 配置为使用“完整”以外的任何信任级别时
<trust level="Full"/>
如果不创建自己的策略文件,您将无法连接到 Active Directory 。一旦您创建了自己的策略文件(假设它被称为“myPolicyFile.config”),那么您就可以对其进行自定义以允许您的 ASP.NET 应用程序连接到 Active Directory。
以下是您需要进行的更改:
在 web.config 中,将网站配置为使用您的自定义策略文件:
<system.web>
...
<securityPolicy>
<trustLevel name="myMediumPolicy" policyFile="myPolicyFile.config"/>
</securityPolicy>
<trust level="myMediumPolicy"/>
...
</system.web>
接下来,在 myPolicyFile.config 文件中,添加“SecurityClass”和“IPermission”条目,如下所示:
<configuration>
...
<PolicyLevel version="1">
<SecurityClasses>
....
<SecurityClass Name="DirectoryServicesPermission" Description="System.DirectoryServices.DirectoryServicesPermission, System.DirectoryServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
....
</SecurityClasses>
<NamedPermissionSets>
<PermissionSet
class="NamedPermissionSet"
version="1"
Name="ASP.Net">
...
<IPermission
class="DirectoryServicesPermission"
version="1"
Unrestricted="true"
/>
<IPermission
class="SecurityPermission"
version="1"
Flags="Execution, ControlThread, ControlPrincipal, RemotingConfiguration, UnmanagedCode"
/>
...
</PermissionSet>
</NamedPermissionSets>
</PolicyLevel>
...
</configuration>
注意: <IPermission class="SecurityPermission"... /> 节点可能已经存在(取决于您基于 myPolicyFile.config 文件的系统定义的信任级别文件)。如果它已经存在,那么您只需将文本“, UnmanagedCode”添加到“Flags”属性。如果它不存在,则将上面的示例复制并粘贴到“ASP.Net”NamedPermissionSet 中。
最后,保存您的更改并重新加载您的网站。你应该很高兴去!