请求“System.Security.Permissions.FileIOPermission..”类型的权限失败

问题描述 投票:0回答:5

在 Windows 2003 上调用写入本地驱动器上的文件的 Web 服务方法时,我收到此错误。

“System.Security.SecurityException:请求类型为‘System.Security.Permissions.FileIOPermission,mscorlib,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089’的权限失败。”

我已完成以下步骤:

  • 网站使用本地系统身份在应用程序池中运行
  • 网站冒充管理员组中的用户。
  • Web 服务组件具有完全信任
  • Web服务的url完全信任机器的web.config。
  • 写入安全的文件夹有模拟用户

那么为什么这个 Web 服务仍然抱怨 FileIOPermission? Fulltrust 包括 FileIOPermission。

web-services security
5个回答
3
投票

经过大量故障排除后,问题归结为我在 web.config 中犯的一个错误,其中位置标记的路径为 www.example.com,但在 IIS 中却是 example.com!


2
投票

右键单击项目 -> 属性 -> 安全选项卡 -> 启用单击一次设置

单击“计算权限”。

在“需要完全信任”消息上单击“是”。

然后问题就解决了。

enter image description here


0
投票

终于找到问题所在了。在 Windows 中构建文件后,我们将它们放入 zip 文件中。将文件添加到 zip 窗口时,会为解压缩文件夹后保留的所有文件添加阻止属性。这些导致文件无法正常运行。可以通过右键单击文件(一次一个),选择“属性”,然后单击底部的“取消阻止”按钮来删除“阻止”属性。这是示例图片:

https://www.howtogeek.com/wp-content/uploads/2011/08/image10.png

为了防止 Windows 添加此阻塞属性,可以查看以下线程:

我可以阻止 Windows“阻止”zip 文件吗


0
投票

也许它不再相关,但我是这样解决的:

Project > Properties > Security > Enable ClickOnce security settings - Uncheck

enter image description here


0
投票

我在遗留系统中遇到了同样的问题,我必须对其进行一些小的更改。最终。我发现这是由我替换的 DLL 文件上的“块”引起的。 DLL 中的逻辑运行得很完美,直到 .NET 遇到了可能需要 CAS 的东西(例如 fileIOPermission),即使信任已满,CAS 未启用......甚至使用 CASPOL 禁用 CAS。但你仍然遇到这个错误。

奇怪的是,运行时确实允许阻塞文件中的业务逻辑。但如果有人遇到这个...还有另一个可能的原因。

© www.soinside.com 2019 - 2024. All rights reserved.