我有一个包含一个网站和多个项目的解决方案。
这些项目都有AllowPartiallyTrustedCallers
属性并且是强命名的。
该网站在完全信任的情况下运行。但是,将信任设置为中等后,我得到 System.Security.SecurityException: Request failed.
我一浏览该网站就出错。
在我的项目中,我调用 LogOnUser
,以及多次调用各种System.DirectoryServices.AccountManagement
方法。
此站点可以在中等信任度下运行吗?还是我必须完全信任所有 LDAP 调用?
正如我所提到的,我已经设置了 AllowPartiallyTrustedCallers
所有项目的属性。不知道还能做什么。
另外,我不知道错误是在哪里生成的。服务器上的事件日志与此 SecurityException 没有任何关系。有什么方法可以找出错误位置,以便我可以尝试重写一些代码吗?
[在 Win2k8R2 上运行 .NET 4.0]
最佳答案
LogOnUser
与所有 P/Invoke 调用一样,需要 SecurityPermission
与 UnmanagedCode
许可标志。 System.DirectoryServices.AccountManagement
需要无限制DirectoryServicesPermission
。默认情况下,这两种权限都不会授予中等信任的 ASP.NET 应用程序。
AllowPartiallyTrustedCallers
属性允许部分信任程序集使用完全信任程序集。在您的情况下,该属性无效,因为 bin 文件夹中的所有程序集都加载到部分信任应用程序域中。
如果您的应用程序需要在中等信任下运行,并且您能够将程序集安装到 GAC 中,那么您可以创建一个包含需要额外权限的代码的程序集,并使用 AllowPartiallyTrustedCallers
标记该程序集。 ,并将其放入 GAC 中。您还需要Assert
抑制仍将发生的堆栈遍历所需的权限。
有关详细信息,请参阅Code Access Security in ASP.NET 4 Applications MSDN 库中的主题。
关于asp.net - 中等信任度的 LDAP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10840199/