2010-07-12 126 views
2

我正在使用OpenFileDialog类浏览窗口应用程序中使用c#的文件。它给出安全例外如下。.net安全异常

请求类型的 许可 'System.Security.Permissions.FileIOPermission, mscorlib程序,版本= 2.0.0.0, 文化=中立, 公钥= b77a5c561934e089' 失败。

我的代码是

 OpenFileDialog fdlg = new OpenFileDialog(); 
     fdlg.Title = "C# Corner Open File Dialog"; 
     fdlg.InitialDirectory = @"c:\"; 
     fdlg.Filter = "All files (*.*)|*.*|All files (*.*)|*.*"; 
     fdlg.FilterIndex = 2; 
     fdlg.RestoreDirectory = true; 
     if (fdlg.ShowDialog() == DialogResult.OK) 
     { 
      txtpath.Text = fdlg.FileName; 
     } 

我没有得到这个问题。 请帮忙。

+0

这是什么类型的程序?您是从网络驱动器或共享运行程序吗? – 2010-07-12 05:08:32

+1

为什么这个标记为asp.net?你想从asp.net应用程序打开客户端上的对话框吗? – 2010-07-12 05:09:18

+0

重新标记为.net,C#和winforms。这可能会吸引正确的答案。 – Gertjan 2010-07-12 06:06:39

回答

1

安全注意
获取或设置FileName属性,您的组装需要由System.Security.Permissions.FileIOPermission类授予的权限级别。如果您在部分信任上下文中运行,则由于权限不足,该进程可能会引发异常。有关更多信息,请参阅代码访问安全基础。

+1

您应该为报价添加一个来源(也可能是一个链接)。也可能解释它实际上对那些不明白的人来说意味着什么...... – 2010-07-12 15:15:24

1

如果您确实试图从ASP.NET应用程序运行此代码,那么您收到的异常是有道理的。这是Windows窗体代码,并不意味着在ASP.NET应用程序中运行。

其中,ASP.NET应用程序运行在信任度降低的环境中。他们不能做某些“正常”应用程序可以做的事情。


.NET包含一个名为“Code Access Security”的概念。它授予对不同.NET特性的不同访问权限,具体取决于代码的来源等。自然,从您的计算机运行的代码更加可信,即从其他计算机运行的代码。在您的环境中,这意味着不能以这种方式访问​​文件系统。

此代码需要被复制到本地驱动器并从那里运行。

+0

我在.NET窗口/桌面应用程序上运行此代码 – 2010-07-12 06:14:27

+0

那么为什么您要标记asp.net问题? – 2010-07-12 06:18:59

+0

对不起,错误 – 2010-07-12 06:22:33

0

对于桌面应用程序,请检查您的项目属性“安全”设置,以确保禁用ClickOnce安全设置。祝你好运!