2010-05-20 6 views
1

Je reçois l'exception suivante lors du téléchargement d'un fichier à Rackspace Cloud File:SecurityException lors de la création de nouveaux FileInfo sur Rackspace

Exception sécurité
Description de: L'application a tenté d'effectuer une opération non autorisée par la politique de sécurité. Pour accorder à cette application l'autorisation requise veuillez contacter votre administrateur système ou modifier le niveau de confiance de l'application dans le fichier de configuration .

Exception Détails: System.Security.SecurityException: Demande d'autorisation de type « System.Security.Permissions.FileIOPermission, mscorlib, Version = 2.0.0.0, Culture = neutral , PublicKeyToken = b77a5c561934e089 ' a échoué

Il semble que cela se produise uniquement avec ce fichier.

Il se passe dans une méthode où je vérifie un nom de fichier unique et je n'arrive pas à comprendre pourquoi.

private string GetUniqueStorageItemName(string storageItemName) 
    { 
     int count = 0; 
     string Name = ""; 


     if (cloudConnection.GetContainerItemList(Container).Contains(storageItemName)) 
     { 
      System.IO.FileInfo f = new System.IO.FileInfo(storageItemName); // error on this line 
      if (!string.IsNullOrEmpty(f.Extension)) 
      { 
       Name = f.Name.Substring(0, f.Name.LastIndexOf('.')); 
      } 
      else 
      { 
       Name = f.Name; 
      } 

      while (cloudConnection.GetContainerItemList(Container).Contains(storageItemName)) 
      { 
       count++; 
       storageItemName = Name + count.ToString() + f.Extension; 
      } 
     } 

     return storageItemName; 
    } 
+0

Ok, parfois juste poster la question aide à mettre en lumière le problème. Le fichier existe déjà sur le serveur .... Je suppose que la question ici est "pourquoi je ne peux pas utiliser FileInfo" ou "ai-je vraiment besoin de l'utiliser - je pense que je peux le contourner" – earthling

Répondre

0

Travailler autour de l'utilisation FileInfo. Changé le code à la suivante. Est-ce la meilleure solution?

  if(storageItemName.Contains('.')) 
      { 
       Name = storageItemName.Substring(0, storageItemName.LastIndexOf('.')); 
       Ext = storageItemName.Substring(storageItemName.LastIndexOf('.'), storageItemName.Length - storageItemName.LastIndexOf('.')); 
      } 
      else 
       Name = storageItemName; 
2

Il semble que votre application soit en cours d'exécution à Trust moyen ou inférieur. Jetez un oeil à ce blog sur Niveaux de confiance et de la façon dont vous pourriez pouvoir les changer ... cela dépend de la façon dont Rackspace configure les choses:

ASP.NET trust levels demystified

+0

merci, essayé et j'ai une erreur que je ne peux pas changer le niveau de confiance dû aux paramètres hérités. – earthling

+0

@senloe - C'est ce que je pensais arriver. Dans les environnements hébergés, il est typique que vous ne puissiez pas accéder directement au système de fichiers (puisqu'il s'agit souvent d'un environnement partagé). –

Questions connexes