SecurityException при создании нового FileInfo в Rackspace - PullRequest
1 голос
/ 20 мая 2010

При загрузке файла в Rackspace Cloud Files я получаю следующее исключение:

Исключение безопасности
Описание : приложение попыталось выполнить операцию не разрешено политикой безопасности. к предоставить этому приложению необходимое разрешение, пожалуйста, свяжитесь с вашей системой администратор или изменить уровень доверия приложения в конфигурационный файл.

Сведения об исключении : System.Security.SecurityException: Запрос разрешения типа «System.Security.Permissions.FileIOPermission, mscorlib, версия = 2.0.0.0, Culture = нейтрально, PublicKeyToken = b77a5c561934e089' не удалось

Кажется, это происходит только с этим файлом.

Это происходит в методе, где я проверяю уникальное имя файла, и я не могу понять, почему.

    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;
    }

Ответы [ 2 ]

2 голосов
/ 20 мая 2010

Похоже, что ваше приложение работает со средним уровнем доверия или ниже. Посмотрите на этот пост в блоге об уровнях доверия и о том, как вы могли бы изменить их ... это зависит от того, как Rackspace конфигурирует вещи:

Демистифицированы уровни доверия ASP.NET

0 голосов
/ 20 мая 2010

Работа с использованием FileInfo. Поменял код на следующий. Это лучшее решение?

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