2011-12-10 3 views
0

J'écris un programme C# (un bot IRC pour être spécifique) et utilise la bibliothèque de script Jint (http://jint.codeplex.com/). J'ai un comamnd externe lié dedans qui quand appelé lit un flux de texte de .js d'un dossier différent. La lecture du premier fichier fonctionne très bien, mais quand je lis l'autre le message que je reçois est:C# SecurityException lors de la lecture du fichier texte

System.Security.SecurityException: Request for the permission of type 'System.Security.Permissions.FileIOPermission, mscorlib, Version=4.0.0.0, Culture=neutral, 
PublicKeyToken=b77a5c561934e089' failed. 
    at HgpBot.Program.TextFile(String path) in C:\Users\Jake\Documents\Visual Studio 2010\Projects\HgpBot\HgpBot\Program.cs:line 167 
    at HgpBot.ExternalCommands.DoFile(Plugin p, IrcEventArgs e, String FilePath) 
in C:\Users\Jake\Documents\Visual Studio 2010\Projects\HgpBot\HgpBot\ExternalCommands.cs:line 76 
The action that failed was: 
Demand 
The type of the first permission that failed was: 
System.Security.Permissions.FileIOPermission 
Request for the permission of type 'System.Security.Permissions.FileIOPermission, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed. 

La fonction C# lancer l'exception est:

public static List<String> TextFile(String path) 
     { 
      List<String> result = new List<string>(); 

      try 
      { 
       using (TextReader tr = new StreamReader(path)) 
       { 
        String line; 

        while ((line = tr.ReadLine()) != null) 
        { 
         result.Add(line); 
        } 
       }  

       return result; 
      } 
      catch (Exception e) { throw e; } 
     } 
+2

Le compte sous lequel l'application s'exécute dispose-t-il des autorisations appropriées pour lire le fichier? En outre, vous ne devriez pas attraper une exception juste pour la renvoyer comme ça. Laissez complètement le bloc try/catch, ou faites 'catch (Exception e) {throw; } ', qui maintient la trace de la pile. –

+0

Oui, car le premier fichier lu se trouve dans le même dossier et il est exécuté sous un compte d'administrateur. –

+1

Votre application est en cours d'exécution avec Partial-Trust (CAS)? – Josh

Répondre

2

Lorem ipsum dolor sit amet, consectetur adipiscing élit. Aliquam nunc nisi, id aliquam et rhoncus, egestas sit amet turpis. Nunc placerat massa ultricies posuere luctus.

+0

A travaillé comme un charme, merci. –

Questions connexes