无法使用C#.Net从C:\Testing\Docs读取txt文件
我有一个C#.NET4.0项目,它需要读取文本文件并解析它们——非常简单 这些文件位于C:\Testing\Docs中 当我尝试在上面的目录中打开文本文件时,出现以下错误: 请求“System.Security.Permissions.FileIOPermission,mscorlib,版本=4.0.0.0,区域性=neutral,PublicKeyToken=b77a5c561934e089”类型的权限失败 文件权限设置为完全访问,我以管理员身份运行 有什么办法吗无法使用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
谢谢。是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啊,我也是!非常感谢。有没有办法编辑评论?