无法使用C#.Net从C:\ Testing \ Docs中读取txt文件

时间:2011-06-15 09:35:00

标签: c# .net file file-permissions streamreader

我有一个C#.Net 4.0项目需要读取文本文件并解析它们 - 非常简单。

文件位于C:\ Testing \ Docs

当我尝试在上面的目录中打开文本文件时,我收到以下错误:

  

请求类型'System.Security.Permissions.FileIOPermission,mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'的权限失败。

文件权限设置为完全访问权限,我以管理员身份运行。

周围有什么办法吗?

感谢。

3 个答案:

答案 0 :(得分:4)

如果您正在部署ClickOnce应用程序,则会出现错误,因为您没有查看文件所需的相应信任级别。这与文件权限不同。

您可以通过以下方式之一解决此问题:

  1. 将以下属性添加到您的程序中:

    [System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name = "FullTrust")]
    
  2. 更改项目属性中的信任级别。简短的方法是只检查“这是一个完全信任的应用程序”,或者你可以继续手动添加文件权限。

答案 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正在执行其权限的用户。您可能需要为该文件夹或文件授予该用户/角色权限。