2015-11-24 61 views
0

我需要使用infopath窗體及其嵌入代碼來搜索具有特定擴展名的文件的目錄。此代碼將用於根據掃描結果填充多行文本框。截至目前,我已經把錯誤信息吐出到catch語句中的表單中。C#infopath directory.getfiles訪問錯誤

 string directory = @"C:\Users\am21820\Desktop"; 

     try 
     { 
      string[] files = Directory.GetFiles(directory, "*.prm", SearchOption.TopDirectoryOnly); 
      string result1 = ConvertStringArrayToString(files); 
      MainDataSource.CreateNavigator().SelectSingleNode("/my:myFields/my:Test_Field", this.NamespaceManager).SetValue(result1); 
     } 

     catch (Exception f) 
     { 
      MainDataSource.CreateNavigator().SelectSingleNode("/my:myFields/my:Test_Field", this.NamespaceManager).SetValue(f.Message); 
     } 

我已經嘗試了除以上內容之外的以下內容。

 //FileIOPermission permission = new FileIOPermission(FileIOPermissionAccess.AllAccess, directory); 
     //permission.AllLocalFiles = FileIOPermissionAccess.AllAccess; 

     //try 
     //{ 
     // permission.Assert(); 
     // permission.Demand(); 
     //} 

     //catch (Exception f) 
     //{ 
     // MainDataSource.CreateNavigator().SelectSingleNode("/my:myFields/my:Test_Field", this.NamespaceManager).SetValue(f.Message); 
     //} 
我用VS 2012和VSTA一起使用InfoPath 2013

與我的過渡到2013年的InfoPath沿更新我碰到下面的錯誤。無論我嘗試掃描哪個目錄,都會出現此錯誤。

請求'System.Security.Permissions.FileIOPermission,mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'類型權限失敗。

回答

0

按設計。您需要完全信任的表單才能訪問文件。

請注意,對於Forms Services C#代碼在服務器上運行 - 並且無法獲得對用戶本地文件的任何訪問權限。

+0

這是否意味着我想要做的事是不可能的? – Merfeld

+0

@Merfeld如果您希望InfoPath以您的身份執行此操作(需要進行安裝才能獲得完全信任),但無法將其作爲服務器表單(因爲此類代碼無法看到客戶機文件系統)。 –