2010-07-12 205 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安全設置。祝你好運!