在部署我们的ASP.NET 2.0应用程序的新版本后,它开始引发安全异常:“System.Security.SecurityException:请求类型'System.Web.AspNetHostingPermission,System,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089‘的权限失败。”
经过在internet上的快速搜索,我们能够通过在IIS 7.5应用程序池中将“Load User Profile”设置为True来解决此问题。这个解决方案在stackoverflow上也被多次提及:
然而,我们无法找到原因,为什么它必须是真的。我们检查了新版本中的所有更改(很高兴只有几个),但没有发现任何可疑的东西(不能像一些文章建议的那样访问注册表或临时数据等)。当IIS7.5中的ASP.NET应用程序需要将“Load User Profile”选项设置为True时,谁能给我们一些提示?
详细信息:
后开始工作
谢谢!
编辑:我们终于找到了这个问题的原因!我们的管理员使用不同的技术将新版本的应用程序从登台环境复制到生产环境。他使用web服务器作为中介。在将压缩的发布构建工件加载到生产环境并解压缩文件后,它们仍然被标记为“被阻止”,因为它们来自不同的计算机。另请参见https://superuser.com/questions/38476/this-file-came-from-another-computer-how-can-i-unblock-all-the-files-in-a。然后,ASP.NET在逻辑上以部分信任而不是完全信任的方式执行这些二进制文件,这实际上导致了我们的应用程序中提到的安全异常。
将"Load User Profile“设置为True修复了安全异常的副作用。如果"Load User Profile“设置为False,则我们的应用程序(不是我们的代码,可能是某个互联网BCL或外部程序集)正在尝试查询有关目录"C:\Windows\System32\config\systemprofile\AppData\Local\Microsoft\Windows\Temporary .NET文件的基本信息,而应用程序池的身份是不允许的:
具有完全信任的
如果"Load User Profile“设置为True,则每次应用程序池启动时,都会在用户目录中创建临时配置文件。然后,我们的应用程序尝试查询有关此配置文件的"Temporary Internet Files“目录的信息,允许应用程序池的身份访问该目录。因此,即使使用部分信任,也不会引发异常。
非常好的故障排除会话!:)
https://stackoverflow.com/questions/3068548
复制相似问题