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

无法使用C#.Net从C:\Testing\Docs读取txt文件,c#,.net,file,file-permissions,streamreader,C#,.net,File,File Permissions,Streamreader,我有一个C#.NET4.0项目,它需要读取文本文件并解析它们——非常简单 这些文件位于C:\Testing\Docs中 当我尝试在上面的目录中打开文本文件时,出现以下错误: 请求“System.Security.Permissions.FileIOPermission,mscorlib,版本=4.0.0.0,区域性=neutral,PublicKeyToken=b77a5c561934e089”类型的权限失败 文件权限设置为完全访问,我以管理员身份运行 有什么办法吗 谢谢。是Web应用程序还是W

我有一个C#.NET4.0项目,它需要读取文本文件并解析它们——非常简单

这些文件位于C:\Testing\Docs中

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

请求“System.Security.Permissions.FileIOPermission,mscorlib,版本=4.0.0.0,区域性=neutral,PublicKeyToken=b77a5c561934e089”类型的权限失败

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

有什么办法吗


谢谢。

是Web应用程序还是Winforms/Cosole应用程序。
对于Web应用程序,用户将不是管理员,而是以其权限执行IIS的用户。您可能需要授予该用户/角色对文件夹或文件的权限。

这不是文件系统权限问题-

这是一个web应用程序吗?如果是这样,您需要提高信任级别

如果程序是从网络共享运行的,或者是从网络共享加载程序集(尽管我认为其中一些规则在.Net 2的生命周期内发生了更改),那么您可能也会遇到问题

Google.net“完全信任”——或者,实际上,你得到的例外——你会得到一个答案

也有这样的情况:

(更新)

由于它不是Asp.Net应用程序,您可能需要根据给定的示例请求设置
“FullTrust”

然而,我认为有一点是你没有说的——因为在我看来,如果它是从你的机器上构建和运行的,那么你就不需要这么做

例如,如果exe(或请求此权限的DLL)已从不受信任的网络位置复制到目标计算机,则它可能已被操作系统阻止-在这种情况下,它将被迫以部分信任的方式运行,检查应用程序文件夹中的每个二进制文件,确保没有任何二进制文件被阻止,如果是,则取消阻止它们


然后再次尝试运行它。

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

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

  • 将以下属性添加到程序中:

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


  • 该文件在其他地方打开,并以独占方式锁定。它是什么类型的项目?代码是否在CodeAccessPermissions不包含FileIOPermission的环境中运行?@Arten-这不是问题所在我在哪里添加第一个选项?我在发生错误的方法之前添加了它[System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand,Name=“FullTrust”)]private void Parse(字符串文件){string data=null;StreamReader sr=new StreamReader(文件);}但是我现在得到另一个错误“请求失败”。在方法的开头。谢谢。@DreX如果请求失败,则表示操作系统正在强制应用程序的全部或部分为部分信任;我已经更新了我的答案,加入了一些关于文件阻塞的信息,这可能会有所帮助。@Andras将其添加到您的主程序类中。您还可以使用@freedompeace处的determinateApplicationTrust()函数确定应用程序的信任级别-谢谢,但我认为您指的是@DreX!:)+1对于
    DetermineApplicationTrust()
    方法,这里没有there@Andras啊,我也是!非常感谢。有没有办法编辑评论?