我有一个C#.Net 4.0项目需要读取文本文件并解析它们 - 非常简单。
文件位于C:\ Testing \ Docs
当我尝试在上面的目录中打开文本文件时,我收到以下错误:
请求类型'System.Security.Permissions.FileIOPermission,mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'的权限失败。
文件权限设置为完全访问权限,我以管理员身份运行。
周围有什么办法吗?
感谢。
答案 0 :(得分:4)
如果您正在部署ClickOnce应用程序,则会出现错误,因为您没有查看文件所需的相应信任级别。这与文件权限不同。
您可以通过以下方式之一解决此问题:
将以下属性添加到您的程序中:
[System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name = "FullTrust")]
更改项目属性中的信任级别。简短的方法是只检查“这是一个完全信任的应用程序”,或者你可以继续手动添加文件权限。
答案 1 :(得分:3)
这不是文件系统权限问题 - it's about 'trust'。
这是一个Web应用程序吗?如果是这样,您需要提高信任级别。
如果程序从网络共享运行,或者它正在从网络共享加载程序集(或者我认为其中一些规则在.Net 2的生命周期内发生了变化),您可能也会遇到问题。
谷歌.net'完全信任' - 或者,实际上,你得到的例外 - 你会得到答案。
也是如此:System.Security.Permissions.FileIOPermission when using MEF to load dll's
(更新)
由于它不是Asp.Net应用程序 - 您可能需要Request Permission for a Named Permission Set - 根据给定的示例请求"FullTrust"
集。
但是,我认为你没有对这个应用程序说些什么 - 因为在我看来,如果它是从你的机器构建和运行那么你不应该这样做。
例如,如果exe(或请求此权限的DLL)已从不受信任的网络位置复制到目标计算机,则它可能已被操作系统阻止 - 在这种情况下,它将被强制执行以部分信任方式运行。 You could try the steps outlined on this article on sevenforums,检查应用程序文件夹中的每个二进制文件以确保没有被阻止,如果是,则取消阻止它们。
然后尝试再次运行它。
答案 2 :(得分:1)
是Web应用程序还是Winforms / Cosole应用程序。 对于Web应用程序,用户不是Admin,而是IIS正在执行其权限的用户。您可能需要为该文件夹或文件授予该用户/角色权限。