雖然@Michael Liu的回答是正確的,但是這個領域的工作知識有限的新手(比如我自己)很難理解。這個答案是爲了補充邁克爾的答案。
當你的web.config配置爲使用的信任級別是什麼,比其他「滿」
<trust level="Full"/>
,那麼你將無法連接到Active Directory沒有creating your own policy file。一旦你創建了自己的策略文件(假設它被稱爲「myPolicyFile.config」),那麼你就可以自定義它來讓你的ASP.NET應用程序連接到Active Directory。
下面是你需要做的修改:
在web.config中,配置網站使用自定義策略文件:
<system.web>
...
<securityPolicy>
<trustLevel name="myMediumPolicy" policyFile="myPolicyFile.config"/>
</securityPolicy>
<trust level="myMediumPolicy"/>
...
</system.web>
接下來,在你的myPolicyFile。配置文件,添加「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類=「的SecurityPermission」 .../>節點可能已經存在(取決於系統定義了基於myPolicyFile.config文件的信任級文件)。如果它已經存在,那麼你只需要添加文本「,UnmanagedCode」到「標誌」屬性。如果它尚不存在,則複製上面的示例並將其粘貼到「ASP.Net」NamedPermissionSet中。
最後,保存您的更改並重新加載您的網站。你應該很好走!
downvote的任何理由? – eych
什麼是LogOnUser?您的'AllowPartiallyTrustedCallers'程序集在您的bin目錄或GAC中? –
'LogOnUser'是位於advapi32.dll中的Win32函數。它用於調用Active Directory。我的問題是關於能夠在中等信任的情況下調用Win32 dll函數。另外,我的程序集不在GAC中,只是bin。 – eych